프로젝트 시작하기
이 문서는 새로운 서비스 혹은 모듈 프로젝트를 시작하는 방법을 소개한다.
준비물
프로젝트를 시작하기 위해서 아래 항목들이 필요하다.
사전 지식
클린 아키텍처
로버트 C. 마틴(Robert C. Martin a.k.a Uncle Bob)가 제안한 소프트웨어 아키텍처이다. 소프트웨어의 각 부분이 담당하는 레이어를 정의하고 레이어 사이의 의존성 규칙을 정의함으로써 레이어간의 의존성을 최소화 할 수 있다. 예를 들어 표현(Presentation)의 변경이 비지니스 로직의 변경 없이 적용될 수 있으며, 그 반대 또한 가능하다. 레이어간 의존성이 적으므로 데이터 저장소의 변경이 쉽고, 또한 도메인 로직 변경이 프레임워크의 영향을 받지 않는 장점도 있다. 좀 더 자세한 내용은 The Clean Architecture 문서를 참고한다.
기능 기반 패키지(Package by Feature)
패키지는 함께 사용되거나 함께 변경되는 코드를 같은 곳에 두는(높은 응집성, Highly-cohesive) 동시에 서로 관련이 없거나 독립적으로 존재하는 코드를 분리(낮은 결합도, Loosely-coupled)하는데 큰 역할을 한다. 언어별로 패키지(package) 관련 문법이나 사용 방법은 다르지만 목적이나 원칙은 거의 동일하다.
패키지 방식에는 대표적으로 레이어 기반 패키지(Package by Layer)와 기능 기반 패키지(Package by Feature) 방식이 있다. 레이어 기반 패키지 방식은 상대적으로 개념을 이해하기 쉽다는 장점이 있으나 높은 응집성과 낮은 결합도를 이끌어내기 어렵다. 하나의 기능 변경을 위해 여러 패키지를 수정해야하며, 이를 위해 많은 이동을 해야한다. 반면 기능 기반 패키지는 패키지의 목적을 달성하기 위한 장점을 충분히 가지고 있기에 많은 부분에서 사용되고 있다.
함께 읽으면 좋은 가이드
전체 보기핸드북
API 정의
이 문서는 버즈빌의 API(애플리케이션 프로그래밍 인터페이스, Application Programming Interface)를 정의하고 사용하는 방법을 기술한다. 인터페이스는 Protocol Buffers를 통해 정의한다. 가이드라인 API 우선 방식 (API-First Approach) 서비스 구성 시 API 우선 방식…
핸드북
버즈빌 아키텍처
이 웹사이트는 버즈빌 소프트웨어 아키텍처 전반에 대한 내용과 개발을 위해 필요한 문서들을 모아두는 공간이다. 들어가며 광고 생태계는 많은 이해관계자로 인해 복잡한 구성을 가지고 있다. 애드테크 기업들은 이러한 광고 업계의 많은 부분을 자동화하고 최적화 함으로써 더욱 효과적이고 효율적인 광고 생태계를 만들어가고 있다. 허나…
핸드북
서비스 배포
본 문서에서는 버즈빌에서 백엔드 서비스를 배포하기 위해 준비해야하는 내용들에 대한 정보를 제공한다. 가이드라인 버즈빌에서 쿠버네티스에 서비스를 배포하는 과정은 아래와 같다. 프로젝트에 따라 상이할 수 있지만 일반적인 백엔드 워크로드 배포 파이프라인을 꾸리기 위해 아래와 같은 준비가 필요하다. Docker 이미지 생성 He…