▶ 링크로 전달된 글 읽고 이해할수 있는 부분만 정리했음
시작 및 문제점
카카오페이는 두가지 앱에서 접근할수 있는 서비스 ->카카오톡/카카오페이
카카오 페이 앱 개편전 카카오톡과 카카오 페이앱을 통해 접근했을때 각각 만나게 되는 UI가 다르다는 문제가 있었음
또한 유저데이터 기반으로 보여주는 정보가 많이 없다는 문제도 있었음
원래 카카오톡에 특화된 기능과 카카오페이앱에 특화된 기능에 차이가 있었기때문에 접근지점별로 서버를 따로 분리해서 관리함
카카오톡 -> 카카오톡 카카오페이홈서버
카카오페이앱 -> 카카오페이앱홈서버
따라서 카카오톡과 카카오페이앱에서 통일된 UI를 만날수 있도록 카카오페이홈을 개편함 위에서 설명한 서버를 분리해서 동시에 유지보수 하는것이 효율적이지 않다고 생각해서 카카오톡에서 접근하던 카카오페이에서 접근하던 똑같은 서버를 사용할수있게 서버를 하나로 합침
개편시 핵심과제
유저의 앱 버전과 무관하게 동일한 경험 제공을 위하여 Server Driven UI 기반으로 설계되었다는데 Server Driven UI 이게 뭔지는 잘모르겟다
회사 개발자분들과 json 인터페이스를 정의해서 해당 인터페이스에 맞춰서 응답할 경우 정의한 대로 UI가 보이게 만들었다
가능한 모든 정보를 서버에서 제어하도록 설계했고 결제탭에서 사용하고 있는 시스템이 현재 없어서 직접 만들었다
개편된 카카오페이홈은 실시간 데이터를 기반으로 유저에게 이로운 정보를 보여줄수 있도록 설계했다
홈전체를 Server Driven UI로 구현하기 위해 하나의 API를 사용했고 이 하나의 API안에 수많은 API를 연동해서 조합해야 하는 서버이다 현재 연동된 서버는 24개이이고 평균적으로 유저1명한테 홈을 보여주기 위해서는 API호출을 50번 해야한다
카카오페이 홈서버 안에 증권,송금 ,마이데이터,포인트 등이 있음
서버개발시 연동을 위한 협의와 개발할 양이 많아서 관련 있는것끼리 묶어서 진행했다 연동서버에서 받은 값을 클라이언트(사용자)한테 넘겨줘야할때는 연동서버의 응답 DTO를 재활용했다
이렇게 개발하면 문제점이 프록시를 할때 즉 서버와 클라이언트 사이의 요청을 대리할때 사용자의 UI가 연동 API응답에 의존하는 문제가 생김 -> 연동 API의 응답이나 스펙이 바뀌면 바로 사용자한체 전달되서 UI가 망가지거나 노출되니 않는 문제가 생김
해결방법으로는 타팀과 협업해서 표준 API 규격 만듬 보통 서버간 연동이 필요한 경우 다른부서 실시간 정보를 불어와서 피드형태로 반환
개선전 -> 기존에 있던 API 응답값을 홈서버 로직으로 처리하여 연동한 API의 구격이 바뀌면 필수적으로 홈서버에 반영하기 위한 작업을 해야함 특히 사이즈가 클수록 변경부분 많음
따라서 연동부서에서 특정 규격에 맞춰서 서버에 api응답을 하면 사용자화면에 규격에 맞게 띄워주기위한 작업완료 어드민에 등록된 정보이용해서 해당 응답을 검증하고 카드응답을 만듬 따라서 홈서버는 세세한 변경에 일일이 대응할 필요없고 다른부서에서 인터페이스만 잘 지키면 문제없음
핵사고날 아키텍처 사용이유
옛날 API도 있고 어떤게 새로 추가될지 모르기때문에 핵심로직에 침입하지 못하도록 막기위해서
연동API를 각각 독립적인 단위로 나눠서(모듈) 의존성 방향을 엄격하게 강제함 즉 의존성을 원하는 방향으로 설정함
api: 반환받은 도메인 객체를 API 응답에 맞는 형태로 변환 및 서버 구동
domain: 도메인 객체 만듬
infrastructure: 외부 API 연동 담당
적용이후 infrastructure 모듈만 수정하면 로직 재사용도 하고 변동에 빠르게 대응할수 있을줄 알았는데 아니었음
왜냐 이미 연동 인터페이스가 외부 변화를 막아주고 있기때문이다 또한 핵심 로직 자체가 도메인 로직과 거리가 멀고 외부세계와 소통하는 로직에 가깝기 때문이다 그리고 신규기능 개발에 비효율적이다 또 팀에 새로온 사람한테 설명하기 어렵고 시간이 많이 걸리며 코드 관리 비용도 올라간다 따라서 장점보다 비효율적인 부분이 커서 코드를 제거함
제거시 관심사단위로 묶어서 로직 담당 코드 찾기 쉽게함 따라서 멀티구조에서 단일 구조로 바꿈
따라서 헥사고날 아키텍처가 어떤 프로젝트에 적합하냐
도메인 모델을 확실하게 정의할수 있는 서비스
외부의존성이 많지 않은 서비스
코어 모듈을 2개이상 사용하는 서비스
'🐢 꼬부기 LV.1 | 개념•기초 > 💧물대포(핵심개념)' 카테고리의 다른 글
| Spring 프레임워크 사용을 위한 STS 설치 방법 (0) | 2026.01.13 |
|---|---|
| 모달창 구현시 중요했던 부분 (0) | 2025.12.18 |
| SweetAlert2 모달창 구현 에러해결 (0) | 2025.12.15 |
| 모달창의 개념 (0) | 2025.12.14 |
| 페이지네이션의 정의 (0) | 2025.12.13 |