Computer Science
팀네이버 컨퍼런스 DAN 24, 20년된 Naver Cafe 서비스가 모듈화로 진화 하기 그후 1년
songmoro
2025. 2. 1. 15:13
728x90
원문(안드로이드): https://tv.naver.com/v/67446433
- 네이버 카페 아키텍처
- 사용했던 것: mvp
- 현재: mvvm + clean architecture
- 모듈
- app
- shared
- repository, domain, util
- model
- ntt, api
- java
- 어노테이션 프로세스 2개
- UI 접근 방식
- 데이터 바인딩, 버터나이프
- 아키텍처 목표
- 오래된 기술 스택 버리기
- 유지보수 어려움
- 뷰 모델
- 기능이 많아서 데이터 흐름 파악 어려움
- 모범 사례
- 일관된 설계로 코드 해석 쉽게
- 오래된 기술 스택 버리기
- 구글이 말하는 모듈화
- 장점
- 코드의 재사용성 증가
- 기능별 코드 분리로 관리 용이성 향상
- 독립적인 테스트 환경 제공
- 전략
- UI, 도메인, 데이터 레이어
- 장점
- 제일 강조하고 싶은 거
- 빌드 시간
- 모듈화로 각각의 모듈 개별 빌드를 통해 빠른 결과
- 빌드 시간
- 빌드를 언제 하나
- 배포
- TDD
- 개발
- 빌드 시간을 줄이면 생산성 향상
- 앱 모듈 구조
- 모듈화 목적
- 유지 가능한 작은 코드 만들기
- 각 레이어 간 분리로 간섭 방지
- 독립적인 코드, 작은 코드
- 규격화하기
- bus factor 높이기
- 각 레이어 간 분리로 간섭 방지
- 유지 가능한 작은 코드 만들기
- 레거시 전환
- 문서화
- 준비
- 어려운 코드 쉽게 바꾸기 혹은 지우기
- 무엇을 바꿀지
- 리팩토링과 과제 분리
- 어떻게 바꿀지
- 대규모 변화 vs 점진적 변화
- 장단점
- 문서화
- 문서 내용
- 기능
- 화면의 기능에 대한 정의
- 예외 사항
- 링크
- 기획, 디자인, 서버
- 플로우 차트 혹은 시퀀스 다이어그램
- 기능
- 어려운 코드 쉽게 바꾸기 혹은 지우기
- 예전에 없었거나 몰랐던 기술로 인해 어렵게 쓰인 코드
- 비동기 처리, ...
- 자바 -> 코틀린 변환으로 없어질 코드
- for + if -> map, filter
- 새로운 기술 도입
- 코루틴, 컴포즈
- 예전에 없었거나 몰랐던 기술로 인해 어렵게 쓰인 코드
- 리팩토링과 과제 분리해서 배포
- PR이 복잡해지니 리팩토링, 과제를 분리
- 리팩토링 후 과제 추천
- 점진적 vs 대규모
- 대규모 변화 해야 할 때
- 조금만 고쳐도 오류 발생
- 배포 후 잦은 핫픽스
- 레거시를 바꾸는 게 의문일 때
- xml -> compose
- 고려사항
- 롤백 염두
- 최소한의 코드로 새로운 버전과 기존 버전 오갈 수 있도록 작업
- 대규모 변화 해야 할 때
- 모듈 나누는 기준
- base
- common
- network
- 인증
- data, domain
- feature
- base
- 노하우
- 자동화된 리팩토링 리뷰
- code move
- unused code remove
- optimize imports
- auto formatting
- kotlin convert
- stacked pr
- 리뷰 순서
- develop <- feature/A
- feature/A <- feature/B
- feature/B <- feature/C
- 머지 순서
- develop <- feature/A
- develop <- feature/B
- develop <- feature/C
- 리뷰 순서
- 자동화된 리팩토링 리뷰
- 노하우 2
- 파일 이동
- 처음 이동은 다른 모듈에 동일 패키지로
- 파일 이동
- 당부
- 리팩토링을 위한 리팩토링
- 새로운 기술 적용은 과제로
- 고립 전략
- 지우지 못할 경우 고립시키는 것도 하나의 방법
- 필요한 경우에만 제한적으로 접근
- 리팩토링을 위한 리팩토링
728x90