마이크로 서비스 = 합성어 . 마이크로 & 서비스
최소단위의 서비스를 만들어서 운영을 한다.
하나하나 나누지 않고 한개한개 단일서비스로 구성할수 있고 , 모놀리틱 아키텍쳐 라고 한다.
단일서비스 아키텍쳐와 달리 비스니스 로직에 필요한 기능들을 하나하나 최소 단위로
만들어서 운영하고 배포한다.
쉽게. 이해 하자면 :
레고블럭을 쌓는 과정 => 하나의 서비스를 레고라고 가정한다면, 비즈니스 로직별로 아키텍쳐를 구성한다.
서비스 벤더마다 아키텍쳐 밴터를 다르게 설정할 수 있다.
비즈니스 로직별 , 기능별로 최소화된 서비스를 구성하는것이 마이크로 서비시스 의 근본
원리라고 생각하면 된다.
레고 블럭을 만들었을때 새로운 블럭의 교체만 하더라도 해당하는 부분 수정이 매우 쉽다.
최소화 되었기 때문에 서비스에서 최소화 된 기능이 업데이트 또는 수정 삭제 되었을때
전체 서비스가 무중단 배포시에도 용이하다.
마이크로 서비스를 통하여서 api 를 설계하는것이 최근의 트렌드다.
우리가 물리적으로 서버에 대해서 고려하지 않아도 되는것이 중요하다.
해당하는 코드를 함수 단위 , 비즈니스 로직 단위로 코드로 구현하는데만 집중하면된다.
cloud 와 serveless 환경의 차이.
cloud 환경에서는 물리적인 서버를 운영할 필요는 없지만 .
loadBalance 도 고려해야하고 Aws 버킷간의 데이터 흐름을 관리해야한다.
클라우드의 서버운용 개념없이 코드 단위로 개발에 집중하는것이 Serverless 다.
클라우드 기반이 되는 DevObs 과정 없이 business 로직에만 집중 ,
서버적 운용의 고려 없이 Function 단위로만 고려가 가장큰 특징이다.
대표적 사례 ) 요즘엔 이미지나 비디오와 같은 이미지 리소스를 사용할텐데.
이미지를 사용자로부터 업로드를 받았다, 해당 이미지를 섬네일로 만드는 작업이 있을때.
cloud 는 항상 하늘위의 구름처럼 떠있어야 한다면,
함수 가 실행이 될때에만 비용이 과금이 되고 실제로 함수단위로만 가동이 되도록
만들어져 있기 때문에
비용이 절감된다.
- express 서버를 별도로 만들어 운영하면서
- 로드벨런싱 하고
- 정적파일을 인코딩 디코딩 하면서
- 직접 라우팅 할 필요 없이
서버리스는 그과정을 함수단위로 인코딩하거나 썸네일 하는 함수만 작성하면 되는것이다.
서버와 관련된 코드가 없기때문에 서버리스인게 가장 핵심이다.