Tonic 's lesson learned


SaaS 소프트웨어를 개발할 때 알고 있어야 하는 12가지

“SaaS(Software as a Service)는 “on-demand software”로도 불리며, 소프트웨어 및 관련 데이터는 중앙에 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하는 형태의 소프트웨어 전달 모델이다.”

위키백과(영문은 여기에서는 SaaS(Software as a service)를 위와 같이 정의하고 있다. 그러면서 아래 4가지를 SaaS의 핵심 특징으로 나열하고 있는데 하나씩 읽어보면 요즘 대부분의 스타트업 앱(App) 비즈니스와 상당히 일치한다.

  • 네트워크 기반으로 접근하고 관리하는 상업적으로 사용 가능한 소프트웨어
  • 각 고객 사이트가 아닌 중앙의 위치에서 활동을 관리, 고객이 웹을 통해 애플리케이션에 접근하도록 함
  • 애플리케이션 전달은 일반적으로 일대일 모델보다는 일대다 모델(single instance, multi-tenant 아키텍처)에 가까우며, 여기에는 아키텍처, 가격, 파트너링, 관리 특성이 포함
  • 중앙화된 기능 업데이트로 패치와 업그레이드 다운로드 필요를 제거함.

The Twelve-Factor App은 이런 SaaS 앱을 만들기 위한 12가지 주요 개념 및 방법에 대해 설명한 글이다. Saas앱은 사용자들의 요구에 초점을 맞춰 서비스 방식으로 소프트웨어를 제공한다. 그렇기 때문에 서로 다른 환경, 배포 이슈, 확장과 이식, 반복 작업의 최소화 및 자동화에 대한 문제를 누구나 맞닥뜨리게 되어 있다. The Twelve-Factor App은 이 문제에 대해 먼저 고민한 개발자들이 Lesson-Learn을 통해 권장할만한 방법을 알려준다.

이 문서의 머릿말과 배경을 통해 그 목적에 대해 더 자세하게 이해할 수 있으며, 아래와 같은 특징의 SaaS 앱을 개발하기 위한 방법론임을 명시하고 있다.

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

The Twelve-Factor App의 목차는 다음과 같다.

  1. 코드베이스
  2. 종속성
  3. 설정
  4. 백엔드 서비스
  5. 빌드, 릴리즈, 실행
  6. 프로세스
  7. 포트 바인딩
  8. 동시성(Concurrency)
  9. 폐기 가능(Disposability)
  10. dev/prod 일치
  11. 로그
  12. Admin 프로세스

The Twelve-Factor App는 수많은 삽질과 막연함으로 부터 개발자와 인프라 엔지니어를 구해준다. 하지만 이런 문제를 직접 겪지 않았거나 고민해보지 않았다면 별다른 감흥이 없을 수도 있다. 영어를 포함해 11개 언어의 번역이 있으며 여기를 누르면 전자책으로 다운 가능하다.