티스토리 뷰

서비스 아키텍쳐 설계

  • 아래는 최근 진행한 프로젝트에서 구축했던 인프라 아키텍쳐이다. (대외비가 될 수 있는 고유명사를 일반화하고 중요한 내부 정보는 적당히 추상화하였다.)

  • 위 아키텍쳐의 서비스는 글로벌 유저를 대상하는 하는 SaaS 서비스로 대표님의 최초 아이디어 제안에서 실제 런칭까지 정확히 50일이 소요되었다. 이미지 프로세싱과 관련 AI를 담당한 CTO 님 1명, 유저와의 접점에서의 프론트엔드 엔지니어 1명, 마지막으로 나머지 백엔드, 데이터 파이프라인, BI, 인프라는 내가 담당하여 총 3명이 구축했다.
  • 한정된 자본, 한정된 인원, 한정된 시간에서 아이디어를 실제 서비스로 빠르게 구축하기 위해 클라우드를 적극적으로 활용했다. 10년 넘게 축적된 경험을 바탕으로 익숙한 부분은 시행착오 없이 빠르게 녹였고, 익숙하지 않은 부분은 프로젝트 시작 전에 미리 기술을 숙지하고 들어갔다.
  • 투입된 모든 기술은 철저히 내부 문서(사내 위키)와 외부 문서(현재 내 블로그)를 기록하여 기술이 공유될 수 있도록 하였다.

프로젝트 수행 계획 수립

  • 아래는 반려동물 관련 국내 1위 쇼핑몰을, 모던 마이크로서비스와 Kotlin, Spring Boot, JPA 기반으로 리뉴얼하는 프로젝트를 담당했을 때, 대표님에게 보고했던 수행 계획 문서의 일부이다.

  • 새로운 프로젝트를 수행할 때 내가 중시하는 철학을 보여주는 상징적인 표라고 생각된다. 분석과 설계에 있어 모두 데이터베이스 엔티티, API, 테스트를 큰 흐름으로 스프린트를 잘게 쪼개어 반복하여 심화시키는 방향으로 개발했다.

명시적 소스 코드 작성

  • 아래는 로그인한 현재 회원 정보를 조회하는 REST API 컨트롤러 코드 설계 예이다.

  • 위 코드를 보면 @LogAction 한 줄로 해당 요청에 대한 로그 정보가 자동으로 적재된다. 또한, @RoleMapping 한 줄로 해당 요청이 허용될 권한 범위 지정이 완료된다. 이와 같이 Java/Kotlin 언어가 가진 어노테이션과 AOP의 특징을 잘 활용하여 소스 코드를 최소화하여 가독성을 높이도록 설계하는 것이 내 기본 철학이다.

데이터베이스 질의는 철저히 Type-Safe로 설계

  • 아래는 코드 레벨에서 데이터베이스에 대한 CRUD를 작성한 예이다.

  • 질의문이 코드에 RAW 상태로 입력되는 것을 철저히 지양하고, 필드 단위, 문장 단위로 Type-Safe로 설계하여 런타임에서의 질의 오류를 예방하고, 유지보수성을 향상시켰다.
  • 복잡한 조인 조건의 질의문도 코드로 작성할 수 있을까? 아래와 같이 작성할 수 있다.

REST API 문서 공개

  • 특정 마이크로서비스 또는 REST API의 내부 아키텍쳐와 코드는 사실 내가 편하자고 잘 만드는 것이다. 결국 최종적으로는 내 서비스를 사용하는 클라이언트와의 접점으로 문서가 친절하고 명확하게 작성되어야 한다. 아래는 과거 쇼핑몰의 인증 프로젝트를 진행했을 때 공개한 문서의 예이다.

댓글
댓글쓰기 폼