티스토리 뷰

 

계속해서 전에 기술을 완료하는게 아니라 새로운 제목으로 시작하게 돼서 죄송합니다.

다만 이번에 인프런에서 새롭게 강의를 들으면서, 이 강의는 정말 좋다고 생각돼서 해당 강의를 바탕으로 

새롭게 MSA와 관련된 글을 작성하고자 합니다. 전에 글들도 관련해서 참조할 부분이 있어서 남겨 두도록

하겠습니다.

 

이론적인 부분은 사실 제대로 정리하진 않았지만, 관련해서 올린거 같아서 짧게 요약하고 가겠습니다.

 

1. Spring Cloud는 무엇이고 MSA는 무엇일까

 

  Spring Cloud와 MSA를 설명하기 전에 Cloud Native Architectrue 라는 부분을 먼저 알 필요가 있습니다. 

Cloud Native Architecture 란 기획단계에서 어플리케이션을 설계할때 부터 크게 3가지로 나누어서 기획한 아키텍쳐 입니다. 

 

1. 확장이 가능하게

2. 탄력적으로 

3. 장애 격리

 

간단하게 말하면 서비스의 확장이 유연하고, 분할 된 서비스 구조로 탄력적이며, 특정 서비스에 오류가 발생해도 다른 서비스에 영향을 주지 않도록 설계된 프로젝트 입니다. 

 

그리고 Cloud Native Architectrue 를 참조해서 만든 어플리케이션을 Cloud Native Application으로 부르기로 했어요

 

그리고 해당 어플리케이션을 만드는 방식에는 MonolithicMicroservice가 대표적이에요.

 

Monolithic 방식은 생소하시겠지만, 기존에 개발하던 방식이에요. 저희가 스프링이나 부트 프로젝트를 진행할 때

 

로그인이나 회원가입 게시판을 하나의 프로젝트에 전부 때려박잖아요? 그 방식이 Monolithic이라고 해요.

 

Microservice는 이와 반대로 각 서비스 마다 분리를 시킨 뒤 중앙 집중화 시킨 방식이에요.

 

로그인은 로그인대로 회원가입은 회원대로 게시판은 게시판대로 따로 분리시켜 개발한 뒤 중앙에서 관리하는 방식이 Microservice 에요

 

두가지 모두 장점과 단점이 있지만, 서비스의 확장이 필요하고 탄력적으로 만들기 위해서는 Microservice를 이용하는게 더 좋다는게 학계의 정설이에요..

 

🧑나 Monolithic방식와 Microservice방식은 정확하게 어떤 점에서 차이가 있나요
👨강사님 개발 과정에서부터 차이나요! Monolithic방식은 하나의 DB를 가지고 뭉탱이로 다 집어 넣거든요.
그래서 개발할때부터 하나의 데이터 소스를 참조하는 프로젝트일 확률이 높고 하나의 프로젝트 이기 때문에 협업툴을 이용해서 관리하게 될거에요!
🧑나 음.. 그럼 Microservice는 DB를 여러개 사용하게 된다는 말인가요?
👨강사님 네! Microservice는 기능적으로 완전히 분리되어 있기 때문에, 심지어 언어도 다를 수도 있어요 java,닷넷프레임워크,node 등등.. 여러가지 언어로 개발될 수 있고 sql도 Mysql,Oracle,Sql Server,Mongo DB,Elastic Search 등등... 여러가지를 통해서 데이터를 참조할 수 있어요.
🧑나 어떻게 그럴 수 있는거죠??!
👨강사님 각 서비스가 독립적으로 구성되어 있기에 가능해요 :) 데이터를 중앙에서 관리할 수 있는 Kafka를 통해서 서로 데이터들을 관리하는게 일반적이에요!

 

Spring Cloud는 MicroService 구축을 조금 더 쉽고 간단하게 해줄 수 있는 도구라고 생각하시면 될거에요.

그리고 Spring Boot가 아닌 Spring 환경에서는 사용할 수 없으니! 무조건 Spring Boot를 활용해서 제작해야해요. 야호!

Spring Cloud 에서 제공하는 기능을 바탕으로 MSA를 구성할때 구조는 일반적으로 다음과 같이 작성돼요

 

  1. 설정관리를 중앙에서 관리해주는 시스템
    • Spring Cloud Config Server
  2. 위치 정보 확인을 위한 메인 서버
    • Naming Server(Eureka)
  3. 중앙에서 관리하기 위한 로드 밸런싱 시스템
    • Ribbon
    • Spring Cloud Gateway
  4. REST 클라이언트와 통신을 위한 시스템
    • FeignClient
  5. 모니터링을 위한 시스템
    • Zipkin 
    • Nefilx API gateway 
  6. 문제가 발생했을때 빠르게 회복하기 위한 시스템
    • Hystrix

 

사전지식은 이 정도만 있어도, 프로젝트를 만들 때 의구심이나 왜 이렇게 만드는지 에 대한 걱정은 조금 줄 것 같아요. 

 

 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함