본문 바로가기

전체 글

(87)
go 동시성 프로그래밍 part 1 Go 동시성 프로그래밍 Part 1 - 동시성의 기초들어가며현대 서비스는 수천 개의 요청을 동시에 처리해야 한다. 동시성을 어떻게 다루느냐가 서비스의 성능과 안정성을 결정한다.Java나 Python에서는 OS 스레드를 직접 생성하거나 스레드 풀을 관리하는 것이 일반적이다. 반면 Go는 언어 차원에서 경량 스레드인 고루틴과 채널을 제공하여 복잡한 동시성 문제를 간결하게 다룰 수 있다.이 글에서는 동시성과 병렬성의 차이부터 시작해서, Go 런타임의 GMP 스케줄링 모델, 그리고 고루틴 간 동기화와 생명주기 관리까지 다룬다.동시성과 병렬성동시성은 구조다카페를 예로 들어보자. 한 명의 직원이 주문, 커피 추출, 서빙을 모두 순서대로 처리한다고 하자. 여기서 동시성을 추가한다는 것은 작업을 독립적인 단위로 분리.. 더보기
From EDA To Temporal 숏폼의 플라이휠을 봤을 때, 추천이 잘 되어서 유저의 소비까지 이루어지게 하려면 일단 영상 수급부터 채워야 한다고 생각했다. 영상이 많아야 시청자에게 더 다양한 콘텐츠를 보여줄 수 있고, 시청이 늘어나면 창작자에게 보상을 줄 수 있고, 보상이 있으면 다시 영상을 올리게 된다. 이 플라이휠을 만드는 것이 목표였다. 내가 숏폼팀에 합류했을 때는 아직 서비스 런칭도 하기 전이었다. 팀에 합류해서 주로 챙기게 된 부분은 콘텐츠 생산에 대한 것이었고, 생산을 충분히 끌어올리기 위한 다양한 시도를 했다. 그중 크리에이터에게 즉각적인 업로드 보상을 해주는 것이 가장 직접적이고 효과적이라고 판단했다. 이 글은 그 보상 시스템이 고정 금액 일괄 지급에서 시작해, 영상 분석 기반 즉시 차등 지급으로 진화하고, 이벤트 드리.. 더보기
조금 늦은 2025년 회고 들어가며25년은 아쉬움이 많이 남지만 그래도 하고 싶은 많은 것들을 이룬 한 해였다. 일에서도, 개인적인 삶에서도 굵직한 변화들이 있었고, 그 하나하나가 의미 있는 시간이었다. 한 해를 돌아보며 정리해 본다.일내가 개발하는 동영상 서비스가 올해만 텐배거, 그 이상을 달성했다. 시청, 업로드, 그 외 대부분의 지표가 폭발적으로 성장했고 치열하게 개발하며 많이 성장할 수 있었다. 프로젝트를 주도하는 책임감이 성장했다. 시스템을 설계하고 개발을 잘하는 건 너무 당연해졌다. 중요하지 않다는 건 아니다. 그 외의 것들을 챙기는 역량이 프로젝트에서 더 필요함을 느꼈고, 리더십과 커뮤니케이션 역량을 배우려 했다. 아직 많이 부족하지만, 그냥 시키는 개발을 하는 게 아니라 이 프로젝트를 왜 해야 하는지 고민하고 기획에.. 더보기
Windows 데스크탑을 사용하여 GitHub Actions Self-hosted Runner와 Cloudflare Tunnel을 설정하는 가이드 Windows 로컬 서버 설정 가이드Windows 데스크탑을 사용하여 GitHub Actions Self-hosted Runner와 Cloudflare Tunnel을 설정하는 완전한 가이드입니다.목차사전 준비Docker Desktop 설치GitHub Actions Self-hosted Runner 설정Cloudflare Tunnel 설정서비스 자동 시작 확인트러블슈팅사전 준비필수 요구사항Windows 10/11 Pro 이상 (Hyper-V 지원)관리자 권한GitHub 계정 및 레포지토리Cloudflare 계정 (무료)도메인 (Cloudflare에 등록된 상태)Chocolatey 설치 (패키지 관리자)PowerShell을 관리자 권한으로 실행:Set-ExecutionPolicy Bypass -Scope P.. 더보기
go 1.25 변경사항 정리 고 언어는 기본적으로 하위 버전 호환을 보장하며 업데이트를 하기 때문에 업데이트를 해도 무방합니다.최근 개발하는 서버에서 go 버전 업그레이드를 하면서 1.25 버전 업그레이드의 간단한 가이드와 무엇이 변경되었는지를 정리했습니다.덧붙여서 1.23 → 1.24에서의 변화까지 추가로 정리했습니다.고 버전 업 가이드고 버전은 로컬에 설치되어있는 go를 업그레이드 하는것과 프로젝트에 설정되어있는 부분들을 업데이트 하는 것 두부분으로 나뉩니다.로컬 업데이트asdf install golang 1.25.0asdf set golang 1.25.0go env- GOROOT, GOPATH 변경 확인asdf install golangci-lint latestasdf set golangci-lint 2.5.0golangci-.. 더보기
글쓰기에 대한 생각 https://paulgraham.com/writes.html Writes and Write-NotsOctober 2024I'm usually reluctant to make predictions about technology, but I feel fairly confident about this one: in a couple decades there won't be many people who can write.One of the strangest things you learn if you're a writer is how many people havpaulgraham.com 폴 그레이엄의 "글쓰기 그리고 글 안쓰기"라는 제목의 에세이를 읽었다. 아래는 원문의 요약이다.AI의 발전으로 인해 우리는 글을.. 더보기
따끈따끈 AWS Solution Architect Associate C03, SAA 후기 - 2023년 1월 30일 시험 AWS 자격증 시험을 준비를 처음 한 것은 2021년 초에 (광일공방) 스터디를 통해서였다. 그당시 공공기관에서 개발하던 나는 클라우드 환경에 대한 이해가 턱없이 부족했고 스터디는 했지만 AWS 서비스를 사용해보지 않았기 때문에 겉핥기 식 공부를 할 수 밖에는 없었다. (물론 이번 시험은 정통 공부법으로 했다는건 아님…) 새로운 회사를 다니며 현재 AWS서비스를 사용하는 기업에서 일하며 다시 공부를 하니 2년전과는 확실히 이해하는 정도가 달랐다. 실제로 내가 공부한 모든 서비스를 사용하거나 네트워크를 구성할 일은 없지만!! 공식(비공식)적인 준비기간은 2년이라는 시간이 소요됐다. 1. 등록 시험 등록은 PearsonVUE 에서만 가능하다. (이전에는 Psi (?) 에서도 가능했다고 한다.) 현재 온라인/.. 더보기
마이크로 서비스에서 분산 트랜잭션과 사가 패턴 우리는 애플리케이션을 개발할 때 자연스럽게 트랜잭션을 사용한다. 스프링 프레임워크에서는 선언형 메커니즘(@Transactional)을 제공하여 간편하게 트랜잭셔널 비즈니스 로직을 작성할 수 있다. 그러나 이를 사용하는 데에는 전제가 있다. 해당 비즈니스 로직이 로컬 트랜잭션에서 해결 가능하거나 단일 DB에 접근하는 모놀리식 애플리케이션일 경우이다. 그렇다면 마이크로 서비스로 구성된 경우는 어떨까? Database per service로 구성된 아키텍처에서도 트랜잭션을 적용하는 것이 간단할 수 있을까? 마이크로서비스 환경에서의 트랜잭션 마이크로 서비스 환경에서의 트랜잭션을 설명하기 위해 배달 애플리케이션의 주문을 예로 생각해보자. 주문, 소비자, 주방, 회계 서비스가 있고 주문이 생성된다면 어떤식으로 트랜.. 더보기