Spring/ETC

SaaS 가 지켜야할 12팩터에 대해 알아보자.

YoonJong 2023. 4. 22. 00:22
728x90

 

마이크로서비스 아키텍처를 보면 SaaS 의 개념과 중요성을 알게 됩니다.

 

SaaS 는 Software as a Service 의 줄임말로, 

소프트웨어가 필요할 때 즉시 필요한 만큼만 사용할수 있는 서비스 형태를 의미합니다.

즉, 설치형 소프트웨어가 아니라, 특정 기간 이나 기능이 필요할 때 사용하는 것입니다.

또한 클라우드 네이티브 애플리케이션이며, 마이크로서비스 개발과 운영에 좋은 구현 방법입니다.

(클라우드 네이티브는 클라우드 환경에 맞는 애플리케이션, 아키텍처, 인프라를 의미합니다 )

 

SaaS 가 가지고 가야할 특성과 패턴을 12가지의 항목을 나눈 것을 12팩터라고 합니다.

이에 대해 알아보겠습니다.

 

 

1. 코드베이스

컴파일을 통해 여러 서버 환경으로 배포될 수 있찌만, 소스 코드 저장소의 원천 소스는 하나를 가지는 것을 의미합니다.

 

2. 종속성

프로그램에 사용하는 라이브러리의 종속성은 명시적으로 선언해야 합니다.

 

3. 환경설정

코드에서의 환경설정 정보는 코드와 완전히 분리되어야 합니다.

리소스 정보가 직접 코드에 있어서는 안되며, 환경 변수를 이용해야 합니다.

 

4. 백엔드 서비스

리소스를 자유롭게 추가하거나 분리할 수 있어야 합니다.

백엔드 서비스를 구분하기 위한 방법은 URI 를 이용합니다.

 

5. 빌드, 릴리스 및 실행

소스 코드는 빌드, 릴리스 실행 단계로 분리되어 운영합니다.

빌드 : 코드를 실행 가능한 형태로 변환하는 과정

릴리스 : 환경 정보를 포함하여 즉시 실행이 가능한 상태로 만드는 과정

실행 : 런타임 환경으로 전환하는 과정

 

6. 프로세스

무상태 상태이며, 상태 정보를 공유하지 않습니다.

상태 정보를 영구적으로 보관하기 위해서 데이터베이스를 이용합니다.

 

7. 포트 바인딩

애플리케이션은 하나의 독립된 서비스로 동작할 수 있고, 외부에서 접속할 수 있도록 포트를 이용해서

다른 서비스와 구분할 수 있습니다.

 

8. 동시성

스케일업을 통해 시스템 부하를 보완하지 않고 스케일 아웃(수평적 확장)을 통하는 방법을 사용하는 것을 지향합니다.

 

9. 폐기기능

비정상적인 프로세스의 종료에도 실행 중인 작업은 안전하게 종료되어야 합니다.

 

10. 개발, 테스트, 운영 환경의 일관성

개발 환경은 테스트나 운영 환경과 최대한 일치해야 합니다.

 

11. 로그

애플리케이션이 실행되는 한 스트림으로 취급하여 같이 흘려보내야 합니다.

 

12. 일회성 프로세스

일회성 작업과 같은 프로세스는 별도로 분리하여 구분합니다.

 

 

728x90