briefing
[Briefing] Facade로 계층 구조 개선하기
🔥 Controller → Service → Repository 계층 구조의 문제점 2.0.0 버전 업데이트 이슈 대응 이후, 서버 업무가 한가해진 타이밍에 기존 설계를 점검해보았습니다. Briefing 팀에서는 전형적인 Controller → Service → Repository 구조를 바탕으로 개발이 되어있었고, 기존 설계에서 여러 문제점을 찾을 수 있었습니다. 먼저, Command 요청에 대한 처리과정 중 DTO ↔ Entity간 변환을 예시로 문제점을 살펴보겠습니다. [기존] DTO ↔ Entity 변환 과정 (Command) Layer Problem-1 Problem-2 Controller Service로 부터 Entity를 반환받습니다. → Controller가 테이블의 세부 구현을 알게 됩니..
[Briefing] API 응답 캐싱을 통한 조회 속도 개선
🚀 API 응답 캐싱의 필요성 Briefing 앱에서는 홈화면에서 타입(사회, 과학, ...)별로 브리핑 목록을 조회하고 있었습니다. 스크랩을 하거나 취소하였을 때, DB에 새로운 브리핑 목록이 추가되었을 때를 제외하면 동일한 응답을 계속 내려주고 있었습니다. 그래서 서버팀에서는 해당 API응답을 캐싱하기로 했으며, 아래와 같은 요구사항을 정의했습니다. 캐시를 도입하기 전/후로 API 응답 속도를 측정해보고 개선된 지표를 확인한다. 100명의 사용자가 10번 요청하는 것을 기준으로 속도를 측정한다. 운영서버와 스펙이 동일한 개발서버(겸 스테이징 서버)에서 속도를 측정한다. 캐시 이름은 메소드명과 동일하게 정하고, 키는 브리핑 타입으로 한다. 스크랩 개수의 정합성을 보장하기 위하여 스크랩 개수 변경시, 캐..
[Briefing] Spotless로 코드 포맷 유지하기
🚀 코드 Formatter의 필요성 코드 Formatter의 필요성은 소프트웨어 개발의 여러 측면에서 중요합니다. 주요 이점은 다음과 같습니다. 일관성 유지 Formatter는 팀 내의 모든 개발자가 동일한 코딩 스타일을 유지하도록 도와줍니다. 가독성 향상 일관된 코드 포맷팅은 코드의 가독성을 크게 향상시킵니다. 이는 코드의 이해를 돕고, 디버깅 및 유지보수를 용이하게 만듭니다. 시간 절약 자동화된 포맷팅으로 수동으로 코드 스타일을 맞추는 데 소요되는 시간을 줄여줍니다. 협업 효율성 일관된 코드 스타일은 팀원들이 서로의 코드를 이해하고 협업하는 데 도움이 됩니다. 💡 Spotless란? https://github.com/diffplug/spotless GitHub - diffplug/spotless: K..