Experience

1. 들어가며마이크로서비스 아키텍처를 구축하다 보면 여러 개의 독립된 서비스가 생기고,각 서비스마다 클라이언트가 직접 접근하도록 두는 건 보안, 버전 관리, 로드밸런싱 측면에서 매우 비효율적이다.그래서 모든 외부 요청을 하나의 진입점을 통해 받아서 내부 서비스로 분기시키는 패턴이 등장했는데, 그게 바로 API Gateway다.Spring Cloud에서 공식적으로 지원하는 Gateway 컴포넌트인 Spring Cloud Gateway는 이 역할을 수행하기에 최적화된 도구다. 2. Spring Cloud Gateway란?Spring Cloud Gateway는 스프링 생태계에서 API Gateway 역할을 수행하는 프로젝트로, 기존 Zuul 1의 한계를 개선하여 WebFlux 기반으로 만들어졌다. 이는 비동기..
1. 들어가며마이크로서비스 아키텍처를 도입하면, 애플리케이션은 하나의 덩어리가 아니라 여러 개의 독립된 서비스로 쪼개지게 된다. 이 각각의 서비스는 독립적으로 배포되고, 개별적으로 확장 가능하다는 장점이 있지만, 반대로 각 서비스가 서로를 찾고 통신해야하는 문제가 생긴다. 이 때, 이 문제를 해결해주는 Spring Cloud Eureka와 Service Discovery 개념에 대해서 정리해보려고 한다. 1.1 마이크로서비스에서 주소 관리는 왜 복잡해질까?근데, 왜 마이크로서비스에서 주소 관리는 복잡해진다고 할까? 서비스를 여러 개로 쪼개면 다음과 같은 문제가 생긴다.어떤 서비스가 다른 서비스를 호출할 때 정확한 주소(IP:PORT)를 알아야 한다 그런데 이 주소는 환경마다 다르고, 특히 클라우드 환경에..
1. 들어가며 Spring Cloud Config로 설정을 중앙화했지만, 변경사항을 각 서비스에 적용하는 과정이 여전히 번거롭다면 Spring Cloud Bus가 해결책이 될 수 있다. 이 글에서는 Spring Cloud Bus와 RabbitMQ를 활용하여 마이크로서비스 환경에서 설정 변경을 자동으로 전파하는 방법을 정리해본다. 2. 왜 Spring Cloud Bus가 필요한가?마이크로서비스 아키텍처에서는 여러 서비스 인스턴스가 동시에 실행되는 경우가 많다. 이런 환경에서 설정을 변경하려면 다음과 같은 문제에 직면하게 된다.2.1 Spring Cloud Config의 한계Spring Cloud Config는 설정을 중앙화하는 훌륭한 도구이지만, 다음과 같은 한계가 있다.Spring Cloud Config..
1. 들어가며마이크로서비스 환경에서는 각 서비스가 독립적으로 운영되기 때문에, 서비스별로 관리해야 할 설정 파일도 많아지고 복잡해진다. application.yml이나 application.properties에 설정을 넣어 관리하는 전통적인 방식은 규모가 작을 때는 괜찮지만, 서비스가 많아질수록 유지보수가 어려워지게 된다.그래서 등장한 것이 Spring Cloud Config. 이 구성 요소는 분산 환경에서 애플리케이션 설정을 중앙 집중식으로 관리하고, 깃(Git) 기반으로 버전까지 추적할 수 있게 해준다. 2. Spring Cloud Config란?2.1 환경 설정을 중앙에서 관리하는 이유단일 서비스에서는 보통 application.yml만 잘 관리하면 충분하지만, 마이크로서비스에서는 문제가 달라진다...
1. 들어가며.. Spring AI는 무엇인가최근 ChatGPT를 비롯한 생성형 AI의 발전과 함께, 개발자들은 자바 애플리케이션 안에서도 이러한 기술을 쉽게 통합하고 싶어 하는 니즈가 커지고 있다. 하지만 LLM API를 직접 다루는 것은 번거롭고, Java와 친화적인 추상화 계층이 없다는 점에서 진입 장벽이 존재했다. 바로 이런 문제를 해결하기 위해 등장한 것이 Spring AI다. Spring AI는 스프링 생태계에 LLM을 쉽게 연동할 수 있게 해주는 실험적인 프로젝트로, OpenAI, Azure OpenAI, Hugging Face같은 다양한 LLM 제공자들을 손쉽게 바꿔가며 사용할 수 있게 해준다. 뿐만 아니라, 프롬프트 템플릿, 벡트 기반 검색, RAG 패턴 구성 등 실제 AI 활용에 필요한..
1. CI/CD: 현대 소프트웨어 개발의 기반1.1. 정의CI/CD는 지속적 통합(Continuous Integration)과 지속적 배포(Continuous Delivery 또는 Deployment)의 약자로, 빈번하고 신뢰할 수 있는 소프트웨어 제공을 가능하게 하는 자동화된 개발 접근 방식이다.이 방식은 변경 사항을 보다 빠르고 안정적으로 릴리즈할 수 있게 하며, 반복적이고 수동적인 작업을 제거함으로써 개발 생산성과 품질을 향상시킨다.1.2. CI/CD 도입의 목적변경 사항의 빠른 통합 및 배포자동화된 테스트와 검증을 통한 품질 확보개발 및 운영 간의 경계 최소화짧은 피드백 루프를 통한 빠른 개선 사이클1.3. 기존 배포 방식과의 차이점기존의 배포 프로세스는 종종 수동적이고 오류가 발생하기 쉬웠다. ..
chillmyh
'Experience' 카테고리의 글 목록 (2 Page)