마이크로 서비스 아키텍처 (MSA)

12-Factor App 방법론

최근 소프트웨어를 서비스 형태로 제공하는게 일반화 되면서, 웹앱 또는 SaaS(Software As A Service)라고 부르게 되었다.
12-Factor App은 아래 특징을 가진 SaaS앱을 만들기 위한 방법론이다.

  • 선언적 형식으로 설정 자동화하여 새로운 개발자가 프로젝트에 참여하는데 드는 시간과 비용을 최소화한다.
  • OS에 따라 달라지는 부분을 명확하게 하고, 실행환경 사이의 이식성을 극대화한다.
  • 클라우드 플랫폼 배포에 적합하고, 서버와 시스템의 관리 부담을 없앤다.
  • 개발환경과 운영환경의 차이를 최소화하여 민첩성을 극대화하고 지속적인 배포가 가능하다.
  • 툴, 아키텍처, 개발방식을 크게 바꾸지 않고 서비스를 확장(scale-up)할 수 있다.

12-Factor방법론은 어떤 프로그래밍 언어로 작성된 앱에도 적용할 수 있고 백엔드 서비스(데이터베이스, 큐, 메모리 캐쉬 등)와 다양한 조합으로 사용할 수 있다.

  1. 코드베이스 (Codebase)
    • 버전 관리되는 하나의 코드베이스로 여러 곳에 배포
  2. 종속성 (Dependencies)
    • 의존 관계를 명시적으로 선언하고 분리
    • 환경에 의존하지 않도록 함
  3. 설정 (Config)
    • 설정 정보는 애플리케이션 코드와 분리하고 환경 변수에 저장
  4. 백엔드 서비스 (Backing services)
    • 백엔드 서비스를 연결된 리소스로 취급
  5. 빌드, 릴리스, 실행 (Build, Release, Run)
    • 빌드, 릴리스, 실행의 3단계를 엄격하게 분리
  6. 프로세스 (Processes)
    • 응용 프로그램을 하나 또는 여러 개의 독립적인 프로세스로 실행
  7. 포트 바인딩 (Port binding)
    • 포트 바인딩을 통해 서비스를 공개
  8. 동시성 (Concurrency)
    • 프로세스 모델에 따라 수평적 확장
  9. 폐기 용이성 (Disposability)
    • 빠른 시작이 가능하며, Graceful Shutdown시 서비스에 영향을 미치지 않도록 하여 안정성 극대화
    • Graceful Shutdown : 정상적인 종료로써 소프트웨어 기능으로 컴퓨터를 끄거나 OS가 프로세스를 안전하게 종료하고 연결을 해제하는 작업을 수행할 수 있는 경우이다.
  10. 개발/운영 일치 (Dev/prod parity)
    • 개발 환경과 운영 환경을 최대한 동일하게 유지
    • CI/CD (Continuous Integration/Continuous Delivery)환경이 갖춰져 있어야 함
  11. 로그 (Logs)
    • 로그를 이벤트 스트림으로 취급함
    • 중앙 집권적인 서비스를 통해 로그 이벤트를 수집하고, 인덱싱하여 분석하는 환경이 가능해야 함
  12. 관리 프로세스 (Admin processes)
    • 관리 작업(admin/maintenance)을 일회성 프로세스로 실행

참고자료

 
egovframework/msa/12factors.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki