본문 바로가기

개발스터디/MSA 스터디 (22년)

(10)
[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] (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서버라고 불리게된다. 이 둘을 한 서버에서 돌리는건 위험하다(실무에서는 한 컴퓨터에서 한 서버를 돌리니까 정확히 말하면 한 컴퓨터에서 돌리..
[MSA 1.0] (2). Flask 설치 및 개발환경 구성 플라스크(Flask)는 2004년 오스트리아의 오픈소스 개발자 아르민 로나허(Armin Ronacher)가 만든 웹 프레임워크다. 플라스크는 아르민 로나허가 만우절에 장난삼아 던진 아이디어였는데 사람들의 관심이 높아져 서비스로 만들어졌다고 한다. 플라스크는 장고(Django)와 더불어 파이썬 웹 프레임워크의 양대 산맥으로 자리매김하고 있다. 플라스크는 많은 사람이 ‘마이크로 웹 프레임워크’라고 부른다. 여기서 ‘마이크로’는 ‘한 개의 파이썬 파일로 작성할 수 있다’ 또는 ‘기능이 부족하다’ 와 같은 의미가 아니라 프레임워크를 간결하게 유지하고 확장할 수 있도록 만들었다는 뜻이다. 플라스크에는 폼(form), 데이터베이스(database)를 처리하는 기능이 없다. 예를 들어 장고라는 웹 프레임워크는 프레임..