MSA 개발 가이드 목차 Spring Boot Spring Cloud 응용프로그램 개발 분야는 Spring 프레임워크의 유례없는 성장과 함께 더 간결하고 빠른 개발을 가능케 하는 패러다임의 변화를 경험했다. Spring 프레임워크의 핵심인 의존성 주입(DI)과 관점 지향 프로그래밍(AOP) 기법은 응용 프로그램 개발의 새로운 표준으로 떠올랐다. 그럼에도 불구하고, Spring 프레임워크의 계속된 발전은 설정의 복잡성을 높였으며, 배포 측면에서는 크게 달라진 것이 없다. 특히, 응용 프로그램의 복잡성과 대화형 개발 및 배포 방식에 대한 근본적인 변화가 요구되고 있다. 이러한 문제를 해결하기 위해 마이크로서비스 아키텍처(MSA)가 도입되었다. 이 아키텍처는 독립적으로 작동하는 컴포넌트들로 대규모 시스템을 구..
지금까지 개발했던 프로젝트들은 모두 모놀로식 아키텍처였는데, 신입으로 입사 이후 마이크로서비스 아키텍처라는 것을 접하게 되었다. MSA는 민첩성과 유연성을 장점으로 하는 클라우드 플랫폼에서 개발, 실행, 운영, 관리될 수 있도록 분산환경을 구성하는 아키텍처이다. 사용자 관점을 유지하면서도, 안정적이도 탄력적으로 운영할 수 있다는 장점도 있다. MSA 개발 가이드는 가벼운 구조로 클라우드 환경에 적용하기 적합한 스프링부트를 사용하여 작성할 것이다. 그래서 앞으로는 MSA로 웹사이트를 개발해 볼 예정이다. MSA로 개발하려면 많은 개발지식이 요구되는데, 하나하나 정리하면서 가이드를 작성해보려 한다. MSA 개발 가이드 목차 MSA의 정의와 사용하는 이유 12-Factor-App 방법론 Service Mesh..
API Gateway는 클라이언트와 백엔드 서비스 컬렉션 사이에 위치하는 API 관리 툴이며, 모든 서버로의 요청을 단일 지점을 거쳐서 처리하도록 한다. 이를 통해 공통된 로직 처리나 인증 및 인가 처리, 라우팅 처리 등을 할 수 있다. API 게이트웨이는 모든 애플리케이션 프로그래밍 인터페이스 즉, API 호출을 수락하고 호출 이행에 필요한 다양한 서비스를 집계하며 적절한 결과를 반환하는 리버스 프록시 역할을 한다. 리버스 프록시(역방향 프록시)란 웹 서버 앞에 위치하여 클라이언트 요청을 해당 웹 서버에 전달한다. 이는 일반적으로 보안, 성능, 안정성을 향상하기 위해 구현된다. API 게이트웨이를 사용하는 이유 API 서비스는 기본적으로 원격 요청을 수락하고 응답을 반환한다. 하지만 실제로는 이렇게 간..
지속적 통합(CI)이란? 지속적 통합은 소프트웨어 개발 프로세스에서 중요한 단계 중 하나이다. 이는 새로운 코드를 작성할 때마다 해당 코드가 이전에 작성한 코드와 잘 통합되는지를 자동으로 검사하는 것을 의미하는데, 이를 통해 개발자는 문제를 더 빠르게 발견하고 해결할 수 있으며, 개발 프로세스가 더욱 효율적이고 안정적으로 이루어질 수 있다. 일반적으로 지속적 통합은 코드를 커밋하는 즉시 빌드를 실행하고, 자동화된 테스트를 수행하여 새로운 코드가 기존 코드와 충돌하지 않도록 검증한다. 이후에는 코드 변경 사항을 다른 개발자와 공유하고, 더 나은 코드를 작성하는 데 필요한 피드백을 얻을 수 있다. 지속적 통합을 적용함으로써 개발 프로세스가 더욱 효율적이고 안정적으로 이루어지며, 팀 내 개발자들의 협업을 강화..
Pub/Sub 모델이란? Pub/Sub 모델(Publish-Subscribe Model)은 분산 시스템에서 메시지 전달을 처리하기 위한 패턴 중 하나입니다. 이 모델에서는 메시지 송신자(publisher)가 메시지를 특정한 주제(topic)로 발행(publish)하면, 해당 주제를 구독(subscribe)하고 있는 여러 수신자(subscriber)들이 메시지를 수신(receive)합니다. Pub/Sub 모델은 다음과 같은 특징을 가집니다. 비동기성(Asynchronous): 메시지 발행과 수신이 동기적으로 이루어지지 않습니다. 메시지 발행 시간과 수신 시간이 다를 수 있으며, 메시지 송신자는 수신자가 메시지를 받았는지 여부를 알 수 없습니다. 느슨한 결합(Loose Coupling): 메시지 송신자와 수..
아파치 카프카란? Apache Kafka는 전통적인 메시지 시스템으로서 메시징 처리 뿐만 아니라, 사용자의 웹 사이트 활동 추적 파이프라인으로 활용하고 애플리케이션의 통계를 집계해 모니터링 데이터로 사용한다. 예전에는 데이터가 필요하면 데이터를 관장하는 조직(Mysql 등)에 요청하고 기다리는 작업을 수없이 반복함으로써 데이터 분석에 걸리는 시간이 늘고 효율도 떨어졌지만, 카프카를 사용함으로써 이벤트 소싱과 같이 시간순으로 발생하는(시계열 데이터) 이벤트를 카프카라는 데이터 버스에 저장해서, 필요한 조직이나 인력이 이 데이터를 필요한 때에 언제든 즉시 활용할 수 있도록 데이터 분석 환경이 빠르게 바뀌고 있다. 카프카는 이처럼 비동기 통신 방식을 매우 큰 규모로, 아주 빠르게 처리할 수 있게 개발된 애플리..