
핵심요약
5년차 게임 서버 개발자가 새로운 회사에서 Scala, 함수형 프로그래밍, 헥사고날 아키텍처 기반의 낯선 코드베이스에 성공적으로 적응한 과정을 상세히 공유합니다. 구체적인 학습 전략과 구현 퀘스트, 그리고 도전 과제를 극복한 경험을 통해 새로운 환경에 적응하는 개발자에게 실질적인 인사이트를 제공합니다.
새로운 코드베이스 적응기: Scala와 함수형 프로그래밍 정복
새로운 기술 스택 학습 및 초기 적응
- 새로운 코드베이스와 언어 Scala에 적응하기 위해 문법 학습, ZIO 프레임워크 파악, 상업 코드 분석 순으로 학습을 진행했습니다.
- 헥사고날 아키텍처와 도메인 주도 설계(DDD) 기반의 생소한 아키텍처에 대한 이해가 필요했습니다.
- SignIn 기능을 집중적으로 파고들어 프로젝트 전반의 프로토콜 및 구현 흐름을 파악하는 전략을 사용했습니다.
핵심 기능 구현을 통한 심층 학습
- 로컬 환경에서 서버 컴파일 및 실행 환경을 설정하며 의존성 및 데이터베이스 프로토콜 변환 문제를 해결했습니다.
- 로그인 보상 기능 구현을 통해
liftEvent함수와 **암묵적 매개변수(implicit parameter)**를 활용한 함수형 프로그래밍의 사이드 이펙트 관리 패턴을 익혔습니다. - gRPC 프로토콜 작업을 통해 Scala의 타입 일관성 유지, ZIO의
for 표현식및 **zio.succeed**를 활용한 안전한 사이드 이펙트 처리를 학습했습니다. - 운영 로그 남기기 기능 구현 시 분석 로그 클래스 계층 상속 및 **
liftEvent**를 통한 이벤트 발생 패턴을 습득했습니다.
도전 과제와 성공적인 극복 전략
- 기존 객체지향과 다른 함수형 프로그래밍 패러다임 및 Scala의 복잡한 문법 이해에 많은 시간이 소요되었습니다.
- 출시 직전 요구사항 변경으로 인한 문서화 부족이 학습을 더욱 어렵게 만들었으나, 직접 가이드 문서를 작성하여 극복했습니다.
- 팀원과의 적극적인 소통과 능동적인 질문 전략을 통해 문제 해결 능력을 향상시켰습니다.
팀 협업 및 지속적인 성장
- 코드 리뷰와 피드백을 통해 코드 품질을 개선하고 팀원들과 협업하는 방식을 익혔습니다.
- 게임 개발 특성상 타 직군과의 원활한 의사소통이 프로젝트 성공에 중요함을 체감했습니다.
- 작은 피처부터 쿠키 퍼즐 챌린지, 유적 탐험 이벤트와 같은 큰 프로젝트까지 경험하며 코드베이스의 큰 그림을 이해하게 되었습니다.
- 향후 DB 및 캐시 구조 개선을 통한 성능 최적화와 시스템 개편에 도전하고, 지속적인 학습을 통해 개발자로서의 성장을 이어나갈 계획입니다.
데브시스터즈