올해가 지나면 아예 후기를 못 쓸 것 같아서 지난달 9일 마곡 코엑스에서 참여한 고퍼콘 후기를 남겨본다.
들어가며
소프트웨어 마에스트로(이하 소마) 시절 그리고 초창기 창업 시절에는 네이버 DEVIEW 같은 행사들이 많아서 이리저리 많은 행사에 참석을 했었고, 그렇게 참석을 하다 보면 다 아는 사람들 만나면서 마치 동창회처럼 서로 인사하고 들으러 다니고 했던 게 기억이 난다. 소마 때는 JCO였나.. 자바 개발자 컨퍼런스에 팀 다 같이 나가서 발표도 했었는데 그게 벌써 햇수로 10년 전 이야기가 되어버렸다. 이후에 회사를 운영하면서 실무 개발 자체에 대한 관심보다는 비즈니스와 운영에 중점을 두었기 때문에 코딩을 계속 해왔지만 거의 개발 컨퍼런스는 잘 몰랐고 코로나가 지나면서 아예 이런 행사 자체에 대한 존재를 까먹고 살았다.
이전 회사에서 간간이 팀원들이 평일에 이런 행사를 가고 싶다고 해서 승인을 해주고 보내주기도 했었다. 코로나 시기가 지나면서 이러한 컨퍼런스 발표가 대부분 유튜브에 라이브되거나 아니면 곧바로 유튜브에 업로드되었기 때문에 그냥 지나면 관심 있는 주제를 가끔 들어보거나 찾아보는 용도로 많이 활용했던 것 같다.
퇴사를 하고 간간이 스레드에 글을 쓰는데 지난 백엔드 글 및 테스트 코드 운영에 대한 스레드를 보고 한 분이 DM으로 연락이 와서 “이번 주 고퍼콘 가시나요? 오시면 커피챗 가볍게 하고 싶습니다.”로 연락이 오셨다. 솔직히 고퍼콘의 존재는 알았지만 이번 주(11월 9일)에 하는 걸 전혀 몰랐고 내가 참석을 직접 한다는 아이디어 자체가 없었기 때문에 당황했는데, 그냥 개발자분들과 오랜만에 얘기도 나누고 싶고 행사도 참여하고 싶고, 내가 Go로 백엔드를 시킨 바람에 Go로 입문하게 된 George에게도 고퍼의 세계를 맛(?)보여주고 싶어서 난 후원 옵션으로 조지는 일반 티켓으로 해서 바로 티켓을 구매하고 DM 주신 백엔드 개발자분에게는 “당연히 갑니다. 그날 잠깐 뵐까요?”라고 답장을 보냈다. 스레드에서 나름 Golang 개발자라고 코스프레하는데 그냥 몰랐었다고 대답하기는 싫었던 걸까 ㅎㅎ 물론 이러한 사실은 행사 당일 연락 주신 개발자분을 만나서 말씀드렸다. 덕분에 참석하게 되었다고.
발표 후기
도중에 커피챗 한다고 한두 가지 정도를 제외하고 거의 다 들었는데, 내가 제대로 이해하고 후기를 쓸 수 있는 발표만 짤막하게 후기를 남기겠다.
- 동시통역 Go로 만들기 - 실시간 AI 인퍼런스, WebRTC
- 회사 이름은 기억은 안 나는데, 에듀테크 회사였고, 도메인이 도메인이다 보니 관심 있게 지켜보았다. 특히 교육에서 제일 중요한 건 “교실”이라는 공간이라고 정의하고 온라인상에서 이러한 교실 경험을 어떻게 구현할 것인가에 대해서 집중하였는데 온라인에서 교실을 Go의 동시성을 어떻게 이용해서 실시간성을 구현하고 글로벌 교실로 확장하여 LiveKit으로 실시간 번역까지 구현하면서 단계별로 챌린지를 하는 과정이 굉장히 인상 깊었다.
- 나중에 유튜브에 다시 녹화본이 올라오면 한번 다시 보고 싶은 발표였다.
- Effect-ive Go: 완전히 Go다운 함수형 프로그래밍
- Go를 하면서 가장 크게 내려놓은 것 중 하나가 함수형 프로그래밍이다. samber/lo를 간혹 쓰기는 하지만, 함수형의 핵심인 불변성, 모나드, 간결한 추상화 등을 Go에서 그대로 구현하는 것은 쉽지 않고, 그렇게까지 비틀어서 쓰는 것이 “Go스럽다”는 느낌도 들지 않는다. 함수형만 파고들던 시절도 있었지만, 지금은 언어와 문제 특성에 맞게 중용을 취하는 편이 낫다고 생각해서, Go에서 Effect 패턴으로 “Go 스타일 함수형”을 어떻게 구현하는지에 관심이 갔다.
- 이 발표에서 말하는 Effect 패턴을 한 줄로 정리하면, “도메인/비즈니스 로직에서는 부수 효과를 ‘이펙트 메시지’로만 선언하고, 실제 DB·외부 API·로깅·동시성과 같은 사이드 이펙트 실행은 별도의 이펙트 핸들러로 위임해서, 순수성·테스트 용이성·재사용성을 극대화하는 Go 스타일 Effect Handler 아키텍처” 정도라고 볼 수 있다.
- https://github.com/on-the-ground/effect_ive_go를 보면서 코드 샘플도 따라 쳐보고, 내 기존 코드베이스(DDD/클린 아키텍처 기반 비교적 큰 백엔드)에도 대입해봤는데, 최소한 “지금 내가 가진 유즈케이스” 기준으로는 기존 계층 구조만으로도 도메인 순수성과 인프라 분리가 이미 잘 되어 있어서, 별도의 이펙트 레이어를 추가하는 것이 이득보다 개념·구현 복잡도를 더 키우는, 일종의 “배보다 배꼽이 더 큰” 패턴에 가깝다고 느꼈다.
- 다만, 이 라이브러리가 겨냥하는 지점 자체는 분명히 있다. Go가 실무에서 종종 멀티 모듈/멀티 런타임(HTTP, gRPC, 배치, 워커 등) 환경에서 쓰이고, 같은 도메인 로직을 서로 다른 인프라 조합으로 실행해야 하거나, 테스트·시뮬레이션·리플레이용으로 동일한 도메인 로직을 여러 핸들러 조합으로 “다르게 해석”해야 하는 복잡한 시스템(CQRS, 이벤트 소싱, 고도 함수형 아키텍처 등)을 설계할 때는 이야기가 달라진다. 이런 상황에서는 로깅, 트랜잭션, 재시도, 서킷 브레이커, 동시성 제어 같은 사이드 이펙트들을 명시적인 이펙트로 모델링하고, 그 처리 시점과 조합을 핸들러 레벨에서 제어할 수 있다는 점이 큰 장점이 될 수 있고, 이럴 때 effect_ive_go 같은 패턴을 실험해볼 가치는 충분히 있다고 본다.
- Test Reality Not Mocks: Reliable Go Tests in the AI Era
- 내가 올린 DB Mocking 반대 글과 일맥상통한 발표였다. 거기서 조금 더 나아가서 실제 핸들러 기반의 테스트를 예시로 들었고 테스트라는 주제 자체를 조금 더 확장해서 TDD 및 Go 프로젝트에서 테스트를 조금 더 잘하기 위한 발표였다. 내가 해당 포스트 올릴 때 TDD는 안 한다고 했는데, 지금은 Claude Code와 함께 TDD 기반으로 코딩을 하고 있기 때문에 해당 발표가 많이 도움을 주었다고 볼 수도 있겠다.
- Dev in Go way (Go스러움)
- 가장 고퍼콘다운 발표였다. Golang 언어 자체에 기반해서 기존의 자바의 빌더 패턴이나 객체지향 언어에서 흔히 쓰이는 패턴이 왜 Go에서 안 맞는지 Go 정신, Go idiomatic에 입각하여 어떤 코드가 Go 코드로써 좋은 코드인지 등을 알려주는 발표였다. 발표자분이 찐고수 느낌이 많이 났지만 발표 자체는 내용이 가장 쉬운 발표였고 컨퍼런스 참석자 모두가 듣기 좋았던 발표였지 않나 싶다.
- Small Interface는 현재 내가 작성하는 백엔드 코드에도 일부 적용해보고 있다. 특히 repository 인터페이스가 비대해지고 코드도 많아져서 코드 파악이 어려운 경우가 생기는데, 그냥 인터페이스도 파일도 나눠서 작업을 해버리니까 의외로 코드 파악도 Claude Code와 동시 작업 충돌도 최소화되어 적용해보고 있다.
- Accept interfaces, return structs는 이미 Go에서 클린 아키텍처를 구현하면 무조건 할 수밖에 없는 패턴이고 빌더 패턴(Go에선 err 멀티플 반환 때문에 알맞지 않다.) 대신 Options pattern을 추천하는 부분이 내 도메인 구조체 파트에서도 사용해볼 수 있을 것 같아서(생성자 옵션값이 많다면) 트라이해보고 있다.
총평
전반적으로 지난 6개월 동안 80%는 Go로 코딩을 했기 때문에 직간접적으로 전부 도움이 많이 되는 발표 내용이었다. 그래서 발표 내용 자체는 좋았다. 나도 서비스를 운영하는 상황에서 한번 발표하고 싶은데, 사실 내가 Go를 시작한 게 5년 전 이 영상 때문이었다. 당근마켓 개발팀 Go언어를 도입하다 | 당근테크 이 영상 발표자이신 변규현 님은 여전히 당근에 계신 것 같고 작년, 재작년에도 고퍼콘에서 발표를 하셨는데.. 올해는 발표자로 참석하지 않으신 것 같아서 아쉬움이 있긴 했다.
네트워킹
먼저 연락 오신 분(A님)과 중간에 스레드에서 글을 발견하고 얘기하게 된 분(B님)이 계셔서 크게 두 팀이랑 얘기하게 되었다. A님은 백엔드 개발자셨는데 캐나다인 대표님(C님)과 함께 행사에 참석하셨는데, https://humanlog.io/ 라는 Observability 서비스를 개발하고 있었다. Go 개발 주제뿐만 아니라 Observability 경험(나 같은 경우엔 Datadog 사용 경험)이나 Clickhouse 등을 얘기했는데 C님께서 Go도 알고 Observability 사용 경험도 있고, Clickhouse도 있는데 함께 해보는 게 어때라는 말을 농담삼아 말씀하시길래 맞장구 치면서 웃었다. (영어 못 알아듣는 척했다.) 그런데 재밌는 게 A님과 C님도 작년 고퍼콘에서 만난 사이라고 하셔서 확실히 A님과는 달리 C님은 사람을 찾는 목적을 가진 것도 같았다.
B님은 같이 풀타임으로 개발하고 있는 Go 개발자분(D님)과 함께 오셨는데 소상공인, 자영업자분들을 대상으로 하는 비즈니스를 하면서 어마어마한 데이터 수집을 Go를 이용해서 하고 있었다. D님이 Go를 사용하시는 분이라 해당 비즈니스 메인 언어가 Go가 되었는데 이제 본격적으로 스케일업을 하고 싶어 Go 개발자를 구하고 싶은데 주위에 워낙 없으니 컨퍼런스라도 참여해서 네트워킹을 시도해보려고 하고 계셨던 것 같다. 뭐랄까 예전에 내가 초기 창업했을 때의 그 열정이랄까 그런 게 확 느껴져서 좋은 팀이었다. Go 개발자는 당장 구하기 어려울 거라 나는 차라리 허슬할 수 있는 주니어를 뽑아서 가르치는 게 나을 수도 있다라고 얘기하긴 했지만.. 좋은 에너지가 느껴져서 괜히 더 응원하게 되는 팀이었다.
컨퍼런스의 목적 = 네트워킹
발표만 놓고 보면 솔직히 이러한 컨퍼런스가 시간 대비 효율이 나지 않는다고 생각했다. 시간표에 따라 정해진 트랙을 쭈욱 듣는 형식인데, 같은 백엔드/프론트엔드/데이터 이런 식으로 트랙을 나눠도 얘기할 범위가 너무 넓고 특히 이런 식으로 Golang이라는 언어로 묶어놓으면 더욱더 그 갭이 크다. 이번 발표도 보면 바이브 코딩부터 블록체인까지 Golang 언어를 쓰면 모두가 공감할 주제부터 당장은 크게 알아듣지도 못하고, 관심이 없는 주제도 많다는 것이다. 물론 Golang 언어와 Goroutine이라는 동시성 처리에 대한 부분 등 그래도 다들 공통적으로 얻어갈 수 있었던 발표였던 것 같다.
다만 네트워킹까지 포함하면 얘기가 달라진다. 이번에 나는 발표 2개 정도는 건너뛰고 중간에 한번, 행사 끝나는 타임에 한번 해서 행사에 오신 분들이랑 우연찮게 연락이 되어 얘기를 나누었는데 이분들의 공통적인 관심사는 채용이었다. 또는 나는 이렇게 Golang 개발을 하고 있는데, 저분들은 어떻게 하고 계시지 같은.
발표를 하게 되면 우리는 단위 시간당 발표자 한 명을 만나는 게 최선인데, 온라인에서도 충분히 들을 수 있는 발표인데 이런 행사에까지 사람들이 참석하는 건 네트워킹의 의미가 크다고 생각한다. 각자 목적과 얘기를 나누고 싶은 사람들을 위해서 공간을 마련하고 시간을 주면 단순히 발표만 듣는 거 이상으로 조금 더 유의미한 시간을 가질 수 있지 않을까.
나는 운이 좋아서 어쩌다 좋은 개발자분들을 만나서 이야기하게 되었는데 기회가 마련되었다면 조금 더 다양한 사람들과 알고 얘기 나누면 좋았을 듯싶다. 우리가 기대하는 기회라는 건 이런 스몰 토크, 커피챗, 네트워킹의 약한 연결고리가 조금씩 생기면서 갑자기 기회로 발전하기도 한다는 걸 난 지난 시간 걸어오면서 크게 깨달았다.
특히, 고퍼콘은 우리나라에서만큼은 상대적 소수 그룹에 속하긴 하지만 데브캣, 당근, 라인 등 나름 큰 기업들의 서포트도 받고 있는 유니크한 포지션을 가지고 있는 언어인 만큼 이러한 네트워킹이 활성화되면 전반적으로 국내 Go 생태계에 기여하는 부분이 훨씬 확대될 것이다.
사진
발표장에서 찍은 네임태그. Google, 당근, DEVSISTERS가 스폰서로 참여했다.
한복을 입고 태극 부채를 든 고퍼가 그려진 에코백. 한국 고퍼콘만의 매력이다.
후원 티켓 구매 시 제공된 굿즈들. 손뜨개 고퍼 인형, 스티커, 키링 등 알찬 구성이었다.
나가며
오랜만에 개발 행사 나들이가 좋았고, 같이 간 George 또한 많은 부분 느끼고 배운 부분이 있다고 해서 좋은 시간이 되었다. 괜히 트렌드만 쫓아다닌다거나 남들 가니까 가는 건 아니다라고 생각해서 어느 순간부터 이러한 행사 자체에 조금 회의적이긴 했는데, 발표도 듣고 사람들과 얘기도 나누고 하니까 좋은 경험이 되었다.
George에게 고퍼의 세계를 보여주러 간 건데, 결국 나도 뭔가 얻어왔다. 5년 전 변규현 님의 발표를 보고 Go를 시작했던 것처럼, 다음엔 나도 고퍼콘에서 발표해보고 싶다.
국내에서 Go 생태계가 조금 더 활발해지길 바라면서 후기를 마친다.