본문 바로가기

개발스터디

(19)
[Spring Cloud] (1) 서비스 디스커버리 쿠버네티스 기능과 비교 Spring Cloud의 기능을 활용하기전에 사용했을때 어떤 이점을 얻을수 있고, 쿠버네티스의 기능을 이용했을때와는 어떤 차이점을 가지는지 ✅ 인그레스 컨트롤러 - AWS NLB 형태의 인그레스 컨트롤러를 배포 - Route 53 의 도메인과 NLB를 매핑 ( *.taskoo.net ) - 인그레스의 Routing Rule을 통해 ( Contour- http proxy 리소스 / istio - gateway / Virtual Service 리소스 ) ✅ Core DNS - CoreDNS 사용할 경우 - springboot.svc.cluster.local 파드 도메인: ..pod.cluster.local 서비스 도메인: ..svc.cluster.local ## 도메인 정보를 어디 저장하고 있는지 확인 해보..
[MSA 1.0] (9) Spring Cloud Config 시작하기 왜 Spring Cloud Config를 사용할까? 지금까지 배포한 모든 프로젝트의 환경설정을 담당하는 파일은 application.yml로 소스와 함께 저장 되서 배포했습니다. 하지만 이러한 방식은 12 factor에 따르면 현대적인 어플리케이션 작성 원칙에 위배 되기 됨으로 Spring Cloud Config를 활용하여 설정 파일을 외부로 분리 하는 아키텍처를 활용 합니다. 이렇게 활용하게 되면 개발/테스트 환경 그리고 운영 환경까지 모든 환경 구성을 간편하게 관리할 수 있습니다. 또한 환경변수가 바뀌었을때 어플리케이션을 다시 빌드하고 배포할 필요가 없기 때문에 개발 생산성에 좋은 영향을 줍니다. 설정을 위한 별도의 서버를 구성하기 때문에 실행 중인 애플리케이션이 셧다운 후 다시 빌드할 필요 없이 실..
[MSA 1.0] (8) Spring Cloud Gateway 시작하기 MSA 아키텍처에서 API Gateway를 사용하는 이유가 무엇일까? 관문 역할을 하는 API GATEWAY를 통해 클라이언트와 백엔드 서비스 사이에 필요한 인증, 속도제어, 장애시 트래픽 절단, 모니터링 등 여러 공동 모듈을 API GATWAY에서 구현하여 공통 관심사를 처리해줄수 있다. Spring Cloud Gateway를 사용하면 간단하게 Eureka와 연동하여 API GATEWAY를 구현할수 있다. 워크로드의 이동성을 보장해줄수 있다. ( 동적 라우팅을 통한 무중단 마이그레이션 ) 1. API GATEWAY란? 리버스 프록시 역할을 하는 관문 역할 비즈니스 로직이 아닌 기타 관심사들을 처리하는 역할 정말 간단하게 정의하자면, API GATEWAY는 클라이언트와 백엔드 서비스 사이에 위치하는 리버..
[MSA 1.0] (7) Spring Cloud 어플리케이션을 kubernetes로 배포하기 jenkins를 통해 현재 우리가 로컬에서 작성한 코드들을 컨테이너화 할 수 있다. 이번 스터디에서는 로컬에 진행해도 상관 없지만, 조금 더 깊게 MSA 에 대해 알고 싶은 분들이 있을까봐 적어보도록 한다. 가장 먼저 컨테이너 화를 하면 가장 좋은점이 무엇일까? 비용절감 장애대비 소프트웨어 생산 주기 단축 회사적으로 위와 같이 막대한 장점들이 생산성 즉 돈에 대해 직결되는 문제이기 때문에 사용한다 쳐도 개발자 또는 그냥 집에서 테스트해보는 우리에게 무엇이 장점이 있을까? 개인적으로 서버를 껏다켰다 안해도 된다. eureka서버나 gateway 서버와 같이 변경을 할 필요가 많이 없는 서버들은 특히 그러하다. 그렇다면 도커 컨테이너 와 쿠버네티스 deployment로 관리하는 차이점은 무엇일까? 이 부분은..
[MSA 1.0] (6) Spring Cloud 어플리케이션을 Docker file로 배포하기 docker을 이용해서 Spring Cloud Application을 배포하는 방법에 대해 알아보자 1. 도커? 도커는 어플리케이션을 컨테이너화 해주는 툴이다. https://themapisto.tistory.com/11 [서버] 서버와 피씨의 차이점 서버와 PC의 차이점이 뭘까요? 우선 구글에 서버라고 검색을 해보면, 서버(영어: server)는 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램(server pr themapisto.tistory.com 왜 컨테이너화를 하지? 컨테이너화를 하는 이유에 대해서 간략하게 설명하자면 기본적인 서버에 대한 지식이 필요할 것이다. 위 글을 참고하도록 한다. 우리 모두가 서버에 대한 지식을 갖추었다고 생각하고, 내 경험을 비..
[MSA 1.0] (5) RestTemplate 개념과 사용법 RestTemplate: 마이크로 서비스들은 기본적으로 REST API를 통해 각 서비스 들끼리 호출 하고 응답하는 구조로 이루어져 있습니다. 이에 RestTemplate은 마이크로 서비스 끼리 통신하는 한가지의 방법입니다. RestTemplate 동작 원리: Rest Template 를 구현해봅시다. 외부 서버에 api 요청을 보내는 역할 핵심은 RestTemplateService의 이부분인것 같다. return apiService.post("https://postman-echo.com/post", HttpHeaders.EMPTY, person, Response.class).getBody(); RestTemplate 을 사용하려면 필요한 시점에 RestTemplate 인스턴스를 생성해야한다. RestT..
Java MSA를 위한 Spring Cloud 환경 구축하기(Eureka) ✅ Spring Cloud란? 포스팅 참고 하시길 바랍니다. https://themapisto.tistory.com/186 ✅ JAVA Micro-Service 실습 환경 구축 기초적인 Microservices 구조를 구현하기 위해서 총 3가지의 프로젝트를구현했고 개발환경은 다음과 같습니다. Spring Boot 2.3.9.RELASE Spring Cloud Hoxton.SR10 https://adoptopenjdk.net/ (JAVA 11 ) ✅ Spring Cloud Eureka란? MSA의 개요와 Spring Cloud의 주요 라이브리들의 이해가 선행되어야 실제 개발하는데 수월하기에 혹시 해당 내용에 대하여 처음 들어보시는 분들은 선행학습 을 해주시길 바랍니다. Eureka 서버에 대해서 알아보도록..
[MSA 1.0] (3) RabbitMQ 메시징 큐 서비스 구현하기 먼저 여러분이 MQ에 대해서 생소하다면 일단 기존 Legacy Application은 어떻게 구현되있는지를 알아야한다. 여러분은 백엔드라고 하면 spring framework, django, jsp 등등을 생각하는 경향이 있다. 뭐 틀린말은 아니지만 이는 backend중에서는 앞단이다. 내부적으로 데이터를 처리하고 가공하는 backend중에서도 뒷단이 존재한다. 즉 backend에서도 front, back이 나뉘게 된다. back의 front와 back의 back, 보통 앞은 RESTful, SOAP, GraphQL등의 API서버라고 불리게 되고 뒷단은 Analysis서버라고 불리게된다. 이 둘을 한 서버에서 돌리는건 위험하다(실무에서는 한 컴퓨터에서 한 서버를 돌리니까 정확히 말하면 한 컴퓨터에서 돌리..