SaaS 아키텍처 설계 방법

Jay_u·2023년 2월 26일
0

SaaS 아키텍처

목록 보기
2/2

안녕하세요, 이번 글에서는 SaaS 아키텍처를 설계하는 방법에 대해서 알아보겠습니다.

1. SaaS Application의 요구사항을 정의하기

SaaS Application이 주는 핵심적인 기능과 필요성이 무엇인지 고민해봅니다.
어플리케이션을 사용할 유저와 저장해야 할 데이터를 정의합니다. 그리고 성능 요구사항을 정의합 니다.
이렇게 요구사항을 정리함으로써 사용할 인프라와 기술스택을 결정할 수 있습니다.

2. 적합한 기술 스택을 결정

언어, 데이터베이스, 써드파티 라이브러리 등 SaaS Application 개발에 필요한 기술 스택을 결정하는 것은 핵심사항입니다. Application의 확장성과 유연성 유지관리에 도움이 되는 기술 스택을 선택합니다.

3. 데이터 아키텍처를 설계

당신의 SaaS 어플리케이션에 데이터가 어떻게 저장되고 접근될지 정의해야합니다. 큰 규모의 데이터를 다루고 어플리케이션이 커저감에 따라 확장 가능성이 있는 데이터베이스를 설계해야 합니다. 분명해야할 것은 데이터베이스의 설계가 높은 성능을 위해 최적화되어야 하고 데이터 안전성을 갖춰야 합니다.

4. 어플리케이션 아키텍처를 설계

마이크로 서비스는 대규모 소프트웨어 프로젝트를 마이크로 단위의 모듈로 분리하여 결합을 느슨하게 하고 API를 통해 서로 통신하는 구조입니다. 이러한 아키텍처 스타일이 클라우드 기반 환경에 적합합니다 왜 그럴까요?

기존 아키텍처를 모놀리식(Monolithic) 아키텍처라고 하는데 이런 아키텍처는 모든 비즈니스 관련 사항을 함께 결합하는 하나의 코드 베이스를 갖춘 대규모의 단일 컴퓨팅 네트워크입니다. 별도의 구현 가능한 구성 요소가 하나로 패키징되어 있죠. 위 그림은 모놀리식 아키텍처의 예시입니다.

이런 모놀리식 아키텍쳐의 문제점은 다음과 같습니다.

  • 어플리케이션이 커질수록 IDE에 과부하 걸림 -> 생산정 저하

  • 어플리케이션 기술 스택 변경의 어려움 -> 변경 시 어떤 side-effect 발생 할지 예측불가

    The Sclale Cube 라는 글에 따르면 확장성을 3가지 축으로 정의합니다.

    X축은 수평축으로 규모 확장성이고 확장 방식이 복제분산입니다.

    Z축은 데이터 확장성으로 확장 방식은 데이터 분리, 병렬 분산으로 데이터를 속성별로 분리하는 것을 의미합니다.

    Y축은 기능 확장성으로 애플리케이션을 기능별로 분리하는 것을 의미합니다.

    모놀리식 아키텍처의 반대되는 마이크로 서비스 아키텍처는 어떤 축을 확장시키고 있을까요?
    바로 Y축입니다. 다양한 기능을 독립적인 서비스로 분리시킴으로써 확장성을 확보할 수 있습니다. 이렇게 하면 개발자의 생산성을 향상시키고 기술 스택 변경의 유연성을 얻을 수 있습니다.

    그렇기 때문에 SaaS Application의 아키텍처를 마이크로서비스 기반으로 설계하여 내결함적이고 유연하면서 확장성을 얻을 수 있도록 합니다.

5. 배포 전략을 계획

당신의 Application에 가장 적합한 배포 전략을 세우세요.
확장성과 보안성 그리고 높은 트래픽을 부하를 처리할 수 있는 배포 전략을 수립해야 합니다.

6. 보안 조치 구현

암호화, 액세스 제어 및 보안 통신 프로토콜과 같은 보안 조치를 구현합니다.
잠재적인 공격으로부터 인프라를 보호하고 데이터를 안전하게 저장해야 합니다.

7. 모니터링과 성능 최적화

모니터링을 통해 병목현상을 식별하고 어플리케이션의 성능을 최적화합시다. 모니터링 소프트웨어 그리고 로드밸런싱을 활용해 어플리케이션이 많은 트래픽을 처리하고 고가용성을 확보할 수 있도록 합니다.

참고 문건
마이크로서비스 아키텍처(Microservices Architecture)의 장점과 단점

profile
정확한 정보를 전달할려고 노력합니다.

0개의 댓글