본문 바로가기

MSA9

[AWS] 푸시 알림 기능 개발 (1) - AWS SNS와 SQS 생성 및 연동 소프트웨어 마에스트로 14기 때 "마이브러리"를 기획/개발하면서, 개발 능력 향상 뿐만 아니라 우리 팀의 목표는 직접 사용자에 대한 피드백으로 앱을 디벨롭하고 실사용자로부터 생기는 이슈를 해결하고자 했다. 그러한 과정에서 사용자가 자주 접속하는 앱을 만드는 것이 중요하다고 생각하고 푸시 알림 기능을 추가하기로 했다. AWS SNS와 SQS를 사용하게 된 이유 (기술 선택 이유) 푸시 알림 기능을 개발할 때, 가장 중요하게 생각했던 부분은 알림 서비스와 다른 서비스 간의 느슨한 결합과 비동기 처리였다. 알림 서비스는 기존에 존재하는 서비스에 부가적으로 더해지는 기능이기 때문에 알림 서비스로 인해 기존 핵심 기능의 성능이 떨어지면 안된다고 판단하여 비동기 처리가 중요하다고 생각했다. 알림 서비스가 구축됨으로.. 2024. 1. 24.
[MSA] 서킷브레이커 적용 (Resilience4j) 작년 소프트웨어 마에스트로 14기에서 개발을 할 때, 내가 가장 많이 성장했던 시기라고 생각한다. 열정적인 동료(세무무 & 동구)와 쏘마의 지원 덕분이라고 생각이 든다. 그 중 클라우드 비용이 지원되었기 때문에 AWS의 여러 리소스를 학습하며 사용해보고, 기술적으로 MSA를 적용해면서 많이 배웠다. 현재는 그 전과 다른 기술을 바탕으로 일을 하고 있어, 이대로면 예전에 공부했던 내용을 다 잊어버릴까 시간이 날 때, 이전에 개발하고 공부했던 내용들을 기록하려고 한다. 먼저 MSA 환경에서 개발하면서, CircuitBreaker가 많이 신기하고 재밌게 개발한 기억이 있어, CircuitBreaker를 적용한 예시와 개념을 정리하려고 한다! 서킷브레이커 개념 여러 서비스로 구성된 MSA 환경에서는 한 서비스에.. 2024. 1. 23.
[Spring Cloud] MSA(7) - 마이크로서비스간 통신 마이크로서비스 간 통신 모놀리식 애플리케이션은 단순하게 메서드를 호출함으로 써, 요청에 대해 응답을 처리할 수 있었다. 하지만, 분산 시스템에서 각각의 독립적인 Micro Service가 서로 통신하는 작업이 필요하다. 마이크로서비스 간 통신은 주로 HTTP기반 Restful API를 사용하여 이루어진다. RestTemplate vs FeignClient RestTemplate Spring Framework에서 제공하는 HTTP 클라이언트 다른 서비스로의 HTTP 요청을 수행하고 응답을 받아올 수 있다. 장단점 장점 다양한 HTTP 메서드를 지원하고, 요청을 다양한 방식으로 커스터마이즈 할 수 있다. 오랜 기간 동안 사용되어 왔기 때문에, 많은 개발자들에게 익숙하다. 많은 커스터마이즈를 제공해 복잡한 통.. 2023. 6. 22.
[Spring Cloud] MSA(6) - 설정 정보의 암호화 처리 Spring Cloud Config 공식 문서에서 Features를 보면, Encrypt와 Decrypt를 지원한다. 각 마이크로 서비스에서 중요한 설정 정보는 보안에 민감한 정보들이 많다. ex) 데이터베이스 암호, API 키, JWT의 Secret Key와 같은 사용자 인증 정보 등 따라서 설정 정보에 보안에 민감한 정보를 저장할 때는 암호화를 하여 저장하는 것이 매우 중요하다. Spring Cloud Config의 Encrypt와 Decrypt를 사용하여 설정 정보를 안전하게 저장하는 방법에 대해서 알아보자. 대칭키 암호화(symmetric) & 비대칭키 암호화(asymmetric) 대칭키 암호화 암호화와 복호화에 동일한 키를 사용하는 방식 주요 알고리즘으로는 DES(Data Encryption S.. 2023. 6. 20.
[Spring Cloud] MSA(5) - Spring Cloud Config Server 구축 Spring Cloud Config Server 분산 시스템 환경에서 서버, 클라이언트 구성에 필요한 설정 정보를 외부 시스템에서 관리하는 서버 외부에서 모든 환경에 대한 정보들을 관리해주는 중앙 서버 기존에는 각 Micro Service가 설정 정보 파일(application.yml)를 관리하여, 해당 파일이 변경되면 해당 서버를 다시 빌드하고 배포해야하는 번거로움이 있었다. Config Server의 장단점 장점 여러 서버의 설정 파일을 중앙 서버에서 관리할 수 있다. 변경 사항이 있을 때 모든 Micro Service에 대해 일관된 업데이트를 적용할 수 있어, 중복 설정을 줄이고 유지 보수를 간소화할 수 있다. Mirco Service가 재배포 하지 않고 설정 파일의 변경사항을 반영할 수 있다. 여.. 2023. 6. 19.
[Spring Cloud] MSA(4) - Spring Cloud Gateway 구축 Spring Cloud Gateway 👍🏻 스프링 기반 API Gateway 마이크로서비스 아키텍처에서 라우팅, 로드 밸런싱, 필터링 등 역할을 수행 Spring 5, Project Reactor를 기반으로 구축되어 비동기 및 논블로킹 기능 지원 Netty 서버를 사용하여 높은 성능을 제공 Gradle 의존성 추가 implementation 'org.springframework.cloud:spring-cloud-starter-gateway' implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' API Gateway 서버를 Eureka Server(서비스 디스커버리)에 등록하기 위해 eureka-client.. 2023. 6. 12.