[캡스톤 디자인] MSA를 적용한 클라우드 기반 온라인 소셜 네트워크 플랫폼 개발 시작

Dev_Sanizzang·2023년 5월 3일
0

캡스톤디자인

목록 보기
1/15

📕 개요

현재 컴퓨터공학과 4학년에 재학중인 나는 캡스톤디자인을 진행하고 있다.
알고리즘 문제풀이를 제외한 마지막으로 블로그를 작성한 지 엄청 오래됐는데 이제 부터 블로그를 통해 내가 학습한 것들을 기록하고자 한다.
원래 Notion을 통해 블로그를 작성하려고도 생각해봤는데 무료 버전은 5MB가 최대라고 해서 그냥 velog를 통해 블로그를 작성하기로 했다!

👨‍💻어떤 프로젝트?

현재 진행하고 있는 프로젝트는 MSA를 적용한 클라우드 기반 온라인 소셜 네트워크 플랫폼이다.
아직 기존 MA 방식의 프로젝트도 한번도 해본적이 없는데 처음부터 MSA 기반의 프로젝트를 진행하는게 맞나 싶긴하다.
아무튼 현재 나는 이 프로젝트에서 백엔드 파트를 맡았다.

일단 위의 그림과 같이 애플리케이션을 구성할라고 생각한다. 사용해야될 기술들이 참 많다.. MSA를 구성하기 위해 Spring Cloud를 사용할 것이며 개발이 완료되면 CI/CD 무중단 배포도 한번 도전해보고자 한다.
현재 4학년 18학점 전공 6개를 듣고 있는 나로써는 정신이 나갈 것 같지만 2023년은 그냥 죽었다 생각하고 개발에 몰두하고자 한다..

📚 API 명세서 및 ERD

기초적인 REST API 명세서, ERD 작업을 해놨다.

이런 팀 프로젝트가 처음인지라 REST API, ERD 모두 개발을 진행하면서 계속 변경이 이뤄지고있다..
요구사항을 명확히 하고 개발을 진행했어야 했는데, 우리 팀원 모두 이런 팀 프로젝트가 익숙하지 않은 탓에 이런 시행착오가 생기는 것 같다. 이렇게 성장해 나가는거 겠지..?

🖧 MSA 구축

위에서 말했다 싶이 Spring Cloud를 통해 MSA를 구축하고 있다.

현재 MSA를 구축하기 위해 사용한 기술은 크게 3개가 있다고 볼 수 있다.
물론 분산 처리 모니터링 메시지 큐잉 서비스를 통한 데이터 동기화 등 다른 기술들도 있겠지만 내가 생각했을 때 핵심은 아래 3가지라고 생각한다!

  • 먼저 Spring Cloud Eureka는 마이서비스들의 레지스트리 역할을 한다. 즉 마이크로서비스들이 자신의 정보를 Eureka 서버에 등록하면, 클라이언트는 Eureka 서버를 통해 필요한 마이크로서비스를 찾아 사용할 수 있다.

  • 다음으로, Gateway는 마이크로서비스들을 외부로 노출시켜주는 역할을 한다. 클라이언트는 Gateway를 통해 필요한 마이크로서비스로 접근할 수 있다. 이를 통해 클라이언트와 마이크로 서비스간의 직접적인 통신이 아닌, Gateway를 통한 간접적인 통신을 통해 보안성과 확장성을 높일 수 있다.

    💡 Gateway를 통해 Load Balancing 기능을 쉽게 적용할 수 있다. 클라이언트가 요청한 API를 처리할 수 있는 여러 대의 마이크로서비스가 있다면, Gateway는 이러한 마이크로서비스들 중에서 가장 적합한 서비스를 선택하여 해당 서비스로 요청을 전달한다.

  • 마지막으로, Config는 마이크로서비스의 설정 정보를 중앙에서 관리하는 역할을 한다. 각 마이크로서비스들은 Config 서버에서 설정 정보를 가져와 사용하게 되며, 이를 통해 설정 정보의 일관성을 유지할 수 있고, 각 마이크로서비스가 독립적으로 동작하게 할 수 있다.

    💡 설정 정보를 업데이트할 시 RabbitMQ를 통해 서버 재실행 없이 설정 정보를 적용할 수 있다!

현재 apigateway-service, discovery-service, config-service를 구축해 놓은 상태이다.

새로운 마이크로서비스를 추가할 때 마다 Eureka에 등록을 하고 위의 apigateway-service의 application.yml 파일에 해당 서비스를 등록할 수 있다!

일단 지금 진행하고 있는 캡스톤은 대략 이렇게 진행하고 있다.
캡스톤은 3월달 부터 시작을 했는데, 기록없이 공부 -> 기능 구현 -> 공부 -> 기능 구현을 하다보니 남는게 없는 느낌이 들었다..
제대로 된 프로젝트가 없는 나로써는 이번 캡스톤디자인이 상당히 중요하기 때문에 이제부터라도 캡스톤디자인을 하면서 공부한 것들 트러블슈팅들을 기록하고자 한다!

다음 글은 아마 이미 구현은 완료한 user-service에 대해 리뷰하고자 한다. Spring Boot, Spring Security, JWT, Redis를 통해 사용자 인증을 해나갔던 이야기들을 풀 것이다.

profile
기록을 통해 성장합니다.

0개의 댓글