1. Spring cloud MSA 개요

woo·2024년 2월 6일
0

인프런의 스프링 클라우드 마이크로서비스 강의를 수강하며 내용을 정리하려 작성하는 포스팅이다

1. IT시스템의 발전 과정

1960~ 1980 - 메인프레임 시기

  • 소프트웨어보다 하드웨어 중심
  • 하드웨어의 사양과 성격에 맞춰 서비스 구축
  • 하드웨어 시스템이 고가였기 때문에 서비스의 기능을 수정, 변경하기 어려웠음
  • Fragile, 깨지기 쉬운 시스템이라는 특징을 가지고 있다

1990 ~ 2000 - 분산 시기

  • Robust Distribute, 시스템의 안정화 + 분산화
  • 덕분에 서비스에 불확실성 변화가 발생하더라도 안정성이 있고 성능이 높은 서비스를 유지할 수 있게 됨

2010 ~ Now - Resilient(탄력적)

  • 이전의 Fragile과 반대로 Anti-Fragile하고 클라우드 네이티브로 시스템 구축
  • local 환경에서 클라우드로 구동 환경이 이전
  • 지속적 변경 및 개선에도 시스템이 탄력적으로 운영될 수 있음
  • DevOPS라는 it 문화가 생겨났으며, 클라우드 네이티브 아키텍처로 전환

Anti-Fragile의 4가지 특징

1. Auto scaling

  • 자동으로 확장성을 가짐
  • 시스템 구성 인스턴스 하나를 오토 스케일링 그룹 하나로 지정
    최소 인스턴스 수와 사용량 따라 자동으로 인스턴스 증가시킴
  • 온라인 쇼핑몰을 예로 들면, 성수기에는 서버를 늘리고 비수기에는 서버를 감소시키는 작업과 유사
  • 핵심은, 이러한 작업을 운영자와 관리자가 수작업으로 처리하는 것이 아니라 CPU, Memory, Network 등의 조건에 따라서 자동으로 처리됨

2. MicroService


넷플릭스의 마이크로서비스 구성도, 파란색은 서비스 간의 연동과 통신을 의미하고 초록색은 넷플릭스 구성하는 각각 마이크로서비스 의미

  • 기존의 서비스(마이크로서비스의 대비 개념은 모놀리식 아키텍처 - Monolithic Architecture)는 하나의 거대한 형태로 구축되어 운영됨
  • MSA는 전체 서비스의 구성 요소인 개별 모듈이나 기능을 독립적으로 개발, 배포, 운영함

3. Chaos engineering

  • 시스템이 급격하고 예측하지 못한 상황이더라도, 견딜 수 있고 신뢰성을 확보하기 위한 수단
  • 운영 중인 소프트웨어 시스템에 실험하는 방법이나 규칙 등이 있음(테스트나 모니터링 툴 등이 연상되었다)

4. Continuous deployment

  • CI/CD라는 지속적 통합, 지속적 배포 등이 유명하다

    유명한 CI 툴인 젠킨스 로고. 아주 우락부락하게 웃통을 까신 사진도 있다

  • 마이크로서비스 특성 상, 하나의 어플리케이션은 수십, 수백개의 세부 서비스로 구성됨

  • 이러한 개별 서비스를 일일히 빌드, 테스트, 배포하는 과정을 수작업으로 수행하기는 어렵다

  • 자동화 + 파이프라인 연동을 통해서 시스템 업그레이드를 신속하게 함

이러한 기술들은 클라우드 아키텍처와 MSA 이전에도 존재했으나, 환경의 변화로 인하여 더욱 활발히 사용되고 있다

profile
BE, DE(지망생)

0개의 댓글