오늘은 미니 프로젝트 끝난 첫번째 월요일, MSA 1일차이다.
꽤 정들었던 강사님의 목소리를 듣지 못해서 이제 아쉽겠지만
또 다른 시작이다. 또한 프로젝트에서 너무 너무 아쉬운 부분이 많았지만..
그 부분은 앞으로 계속 리팩토링 하는걸로!
지금 듣고 있는 강의의 진도에 맞춰서 내용을 정리할 생각이지만, 강의는 내일부터 거의 실습이기에 스프링 마이크로서비스 코딩 공작소 개정 2판을 기반으로 공부하여 정리할 생각이다.

하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐.

모놀리스 아키텍처란 msa와는 달리 하나의 어플리케이션을 말한다. 규모가 작으면 구축 및 배포가 쉽지만 규모가 커질 수록 모놀리스를 관리하는 것은 매우 어렵다.
스프링 프레임 워크를 이용하여, 마이크로서비스를 간단하게 운영하고 배포할 수 있는 프레임 워크.

우리가 앞으로 만들어 나가게 될 간략한 구성도이다.
클라이언트가 요청 -> API 게이트웨이 -> 유레카 서비스 -> 서비스의 위치를 조회 -> 해당 마이크로 서비스 호출
클라우드 네이티브란? 애플리케이션이 더 빠르고 효율적으로 개발되고 운영될 수 있도록 하는 접근 방식이다.
CI/CD, DevOps, 마이크로서비서, 컨테이너를 포함하고 있다. 이 중, CI/CD만 조금 살펴보자.

CI/CD를 살펴보기 전에, 도커를 먼저 소개한다. 도커란, 리눅스의 격리 기술들을 사용해 컨테니어를 빌드, 배포, 실행, 관리를 할 수 있는 오픈 소스 플랫폼이다. 이 플랫폼을 활용하여 ci/cd를 편리하게 할 수 있기 때문에 도커를 이용한다.
CI(지속적 통합) : 빌드
build.gradle 이라고 생각하면 되고 빌드 자체라고 보면 된다.
CD(지속적 배포)
빌드한 이미지를 도커 허브에 옮기는 작업이라고 생각하면 쉽다. CD의 D가 Delivery의 역할과 Deployment역할을 한다.
docker image -> push -> Container registry 즉,
Container registry(Docker Hub)에 이미지 올리는 것.
실습으로는 사용자, 포스트, 알림 서비스를 분리하고 구현해서 어떤식으로 운영되는지 알아보려 한다.
도구 : 도커, 인텔리제이
현재, 도커의 user, alim 서버가 올라와 있는 상태.

Spring Web
Lombok
Cloud LoadBalancer 3개를 추가해준다.
spring:
application:
name: 프로젝트 이름
active profile에
-Dspring.profiles.active=local 설정
현 단계에는 user, alim 서버 2개를 설정했다. user에서 alim으로 가는 로직이고, alim local yml에 포트는 8082, user port는 8081로 설정.
@Configuration
public class RestTemplateConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
위 코드는 RestTemplate 를 빈으로 등록하고, @LoadBalanced 어노테이션을 붙여서 서비스 간 통신에 로드 밸런싱이 가능하게 한 것이다.
후에
restTemplate.getForObject(
"http://alim-service/backend/alim/v1/hello"
, String.class);
을 호출함으로써 alim-service 서비스의 이름을 서비스 디스커버리에서 찾고 라우팅 해준다.