배포 완료. 프로젝트 회고
해당 아키텍처가, 우리가 NCP를 통해 구축한 최종 플랫폼이다.
이와 같은 형태로(UI 개선 이전 본이지만, 전체적인 구조 정도는 파악할 수 있다.)
기능 리스트업은 간략하게, 다음과 같다.
1. 회원가입,로그인
2. OAUTH2 로그인,회원가입
3. 상품 조회
4. 상품 작성, 수정, 삭제
5. PG사를 활용한 결제 진행
6. 채팅 (추가 예정)
7. 장애인이 활용가능한 체육 시설 전달
그 과정에서, 다양한 시스템적인 고민을 했다.
1. DELETE 노출을 최소화 하기 위해 노력했다.
- 매 자정 마다 DELETE, 스케줄러를 활용해 데이터 수 확인 후 제거
2. MSA 구조 상의 예외 처리
- APPLICATION 영역에서 통신하는 형태로 구현
- MSA로 결제를 구축하는 과정에서, 시스템간 통신하는 과정에서 세밀한 예외처리가 요구 되었음.
- 시스템 간의 통신 과정에서 예외처리 진행, 완료.
구조 상의 특징
1. MSA
우리는 MSA 형태로, 또 APPLICATOIN 영역에서 통신하는 형태로 구현을 진행했다.
그 과정에서 다른 서비스의 예외가 발생했을 시 , 이를 받는 로직을 통해 대비했다. (특히 결제에서)
2. API-GW (SPRING CLOUD)
우리의 API-GW는, JWT와 같은 방식으로 토큰을 FRONT에 제공하고, 이에 맞는 ENDPOINT로 변경하여 내부 서버로 전달하는 역할을 포함한다.
해당 방식을 통해 STICKY SESSION 문제 등에게서 자유로울 수 있었다.
이러한 형태를 살리기 위해, LOAD-BALANCER의 INGRESS를 통해 해당 POD를 노출하여
모든 요청을 한 곳에서 받는 형태로 구축하게 되었다.
아쉬운 점
1. 너무 시스템적인 측면에 몰입했다.
가장 많이 들었던 조언은, 시스템으로 고민한 것은 알겠으나.
그것을 내가 왜 알아야 하는가? 였다.
시스템의 안정성, 구조 상의 이점 등을 위해 노력했지만 이는 사용자에게 직접적으로 노출되지 않는 부분이었다.
또한 결제 플랫폼은 비록 스타트업 규모에서 하는 업무를 우리 팀원 만으로 완성했다는 점에서 의미가 있지만,
이미 존재하는 플랫폼이었다.
2. CLOUD를 위한 깊은 고민을 하지 못했다.
CLOUD를 통해, 특히 NCP를 통해 배포하는 과정에서 K8S를 통해 배포를 하였지만
깊은 아키텍처나 인프라 적인 고민까지 하지는 못했다는 피드백을 받았다.
조금 더 깊은 고민을 했었어야 했다.
3. CLOUD의 배포 측면에서 많은 참여를 하지 못했다.
CLOUD로 배포하는 과정에서, 부트캠프에 임했다.
이후 CI/CD를 구축하고, DB POD를 구축, 운영하는 과정에서
문제가 생겼을 시에 즉시 이를 해결하는 등, 운용 적인 경험을
정말 얕게 경험하였지만, 다른 팀원이 배포를 담당할 수 밖에 없었다.
그럼에도 얻은 것
1. 시스템 설계 , 구축, 운영의 경험을 할 수 있었다.
처음으로 깊게 진행한 프로젝트 였지만, 설계부터 구축 운영까지 이어지는 경험을 할 수 있었다.
이렇게 처음부터 끝까지 프로젝트를 모두 우리의 힘으로 하는 경험은 , 다시 얻을 수 있을까 싶을 정도로 귀중한 경험이다.
2. MSA 기반의 개발 경험을 얻을 수 있었다.
MSA 시스템은 시스템간 통신을 진행하기 떄문에, 밀접한 소통이 필요했다.
명세서를 바탕으로, 서로의 작업을 문서를 통해 설명하며 모든 프로젝트를 진행하며 MSA 기반의 개발 경험을 얻었다.
3. 불가능하다고 전달받았던 문제도 해결했다.
DB를 K8S에 올리는 과정에서, MEMORY의 부족 문제를 만났다.
REQUEST,LIMIT를 통해 DB의 문제는 DB에서 책임지게 하였지만, DB를 최초 생성할 떄 발생하는
메모리의 부족 문제를 반복해서 만났다.
클러스터 메모리의 용량을 늘리기 위해, NCP 센터와 KPAAS 센터에게 반복적으로 연락을 보냈다.
또한 왜 이러한 메모리의 증가가 필요한지, 문서로 정리하여 지속적으로 연락했다.
최초에 불가능하다는 응답을 받았지만, 메모리 용량을 2배로 증가시켜 안정적으로 서버를 운용할 수 있었다.
문제는, 투덜댈 시간에 행동하면 어떤 문제든 해결할 수 있었다.
앞으로 ..
난 현재 부트캠프를 진행중이다.
이러한 부트캠프의 최종은, CLOUD 배포까지 완료하는 시스템의 개발이다.
이번 아쉬운 점은, 다시는 나타나지 않게 하고
이번 얻은 점은, 해당 프로젝트에서는 더욱 더 드러날 수 있는 프로젝트를 또 개발해 보겠다.
6개월 넘는 시간 동안 최선을 다해준 팀원들과, 이러한 프로젝트 계획을 세우고 끌어준 팀장에게 특히 고맙다.