공부

SaaS 란?

foobarbaz 2024. 9. 24. 22:23

1. SaaS란? 

SaaS(Software as a Service)는 클라우드를 통해 소프트웨어를 제공하는 서비스 모델을 말합니다. 사용자는 소프트웨어를 다운로드하거나 설치하지 않고, 인터넷을 통해 웹 브라우저나 애플리케이션을 통해 소프트웨어를 이용할 수 있습니다. 이 방식은 전통적인 소프트웨어 배포 모델과는 다르게, 사용자가 하드웨어에 소프트웨어를 설치할 필요가 없으며, 업데이트 및 유지보수도 서비스 제공자가 담당합니다.


2. SaaS의 주요 특징

  • 구독 기반: 일반적으로 월별 또는 연간 구독 모델로 제공되어 초기 비용이 적고, 필요한 기간 동안만 사용할 수 있다.
  • 접근성: 어디서나 인터넷만 연결되어 있으면 접근이 가능하며, 다양한 장치에서 사용할 수 있다.
  • 확장성: 서비스 제공자가 서버 인프라를 관리하므로, 사용자는 소프트웨어 확장이나 성능 관련 이슈를 걱정할 필요가 없다.
  • 자동 업데이트: 소프트웨어 제공자가 자동으로 업데이트와 버그 수정을 수행.

3. SaaS의 장점

 

  • 비용 효율성: 초기 설치 비용 없이 구독형 서비스로 이용할 수 있다는 점.
  • 유연성과 확장성: 사용자가 필요할 때 용량을 쉽게 늘리거나 줄일 수 있는 기능.
  • 접근성: 다양한 디바이스에서 언제 어디서나 인터넷만 있으면 접속할 수 있음.
  • 보안과 유지보수: 서비스 제공자가 보안을 관리하고 유지보수 및 업데이트를 자동으로 처리하는 장점.

4. SaaS의 단점

 

  • 데이터 보안 문제: 클라우드 상에서 데이터가 저장되기 때문에 발생할 수 있는 보안 우려.
  • 맞춤화 제한: 전통적인 소프트웨어에 비해 기업의 특정 요구에 맞춘 맞춤형 기능 개발이 제한적일 수 있음.
  • 인터넷 의존성: 인터넷 연결 없이는 서비스 사용이 불가능하다는 단점.

5. SaaS의 대표적인 예

  • 구글 드라이브
  • 마이크로소프트 365
  • 슬랙
  • 세일즈포스(Salesforce)

6. SaaS의 기술 스택

  1. 클라우드 인프라
    • AWS (Amazon Web Services): 가장 널리 사용되는 클라우드 플랫폼으로, 컴퓨팅 파워(EC2), 데이터 스토리지(S3), 데이터베이스(RDS), 로드 밸런싱 및 확장성 기능을 제공한다.
    • Microsoft Azure: Azure는 마이크로소프트의 클라우드 서비스로, 다양한 컴퓨팅 리소스와 DevOps, 보안 기능을 포함하여 엔터프라이즈 환경에서 많이 사용된다.
    • Google Cloud Platform (GCP): 구글 클라우드 플랫폼은 머신러닝 및 데이터 분석 도구와의 통합이 뛰어나며, Google Kubernetes Engine(GKE) 등을 통해 확장 가능한 컨테이너화된 서비스를 쉽게 제공할 수 있다.
  2. 백엔드
    • 프로그래밍 언어: SaaS 백엔드를 구축할 때 사용되는 주요 언어
      • Java: 안정적이고 확장성 있는 엔터프라이즈 애플리케이션을 개발하는 데 많이 사용되며, 특히 Spring Boot 프레임워크가 자주 사용한다.
      • Node.js: 비동기 I/O와 이벤트 기반 구조 덕분에 실시간 애플리케이션 개발에 적합하며, 특히 I/O 처리가 많은 SaaS 애플리케이션에 적합하다.
      • Python: Flask나 Django와 같은 프레임워크를 사용해 빠르게 웹 애플리케이션을 개발할 수 있으며, AI 및 머신러닝 기능을 SaaS에 통합할 때도 많이 사용한다.
      • Ruby on Rails: 신속한 프로토타이핑과 간편한 개발을 위해 사용하는 인기 있는 웹 프레임워크.
    • 웹 프레임워크: SaaS의 서버 로직을 처리하는 데 사용되는 프레임워크로는 Spring Boot(Java), Express(Node.js), Django(Python) 등이 있다.
    • API: SaaS는 일반적으로 REST API 또는 GraphQL을 사용해 클라이언트와 통신한다.
      • REST API: HTTP 요청을 통해 서버와 클라이언트 간 데이터를 주고받는 일반적인 방식.
      • GraphQL: 특정 데이터만 요청할 수 있게 하는 API 쿼리 언어로, 복잡한 데이터 구조를 처리할 때 유용.
  3. 프론트엔드 (Frontend)
    • 프론트엔드 프레임워크:
      • React: 자바스크립트 라이브러리로, 컴포넌트 기반 구조 덕분에 복잡한 SaaS 애플리케이션을 모듈화하여 개발.
      • Vue.js: 상대적으로 가벼운 프레임워크로, React와 비슷한 컴포넌트 기반 구조를 제공.
      • Angular: 구글에서 제공하는 자바스크립트 프레임워크로, 대규모 SaaS 프로젝트에서 주로 사용.
    • HTML/CSS: 기본적인 웹 페이지의 구조와 스타일을 정의하는 언어로, SassLESS 같은 CSS 전처리기를 사용해 유지보수가 쉬운 스타일링이 가능.
    • TypeScript: 자바스크립트의 상위 집합으로, 정적 타입 체커를 통해 오류를 사전에 방지하며, 대규모 SaaS 애플리케이션에서 자주 사용된다.
    4. 데이터베이스
    • 관계형 데이터베이스: 데이터의 일관성과 구조가 중요한 경우 사용.
      • MySQL: 널리 사용되는 오픈 소스 데이터베이스.
      • PostgreSQL: 고급 기능과 확장성을 갖춘 오픈 소스 데이터베이스로, 관계형 데이터와 JSON 데이터를 모두 처리할 수 있다.
      • Oracle: 대기업 SaaS에서 사용하는 상용 데이터베이스.
    • NoSQL 데이터베이스: 대규모의 비정형 데이터를 처리할 때 주로 사용.
      • MongoDB: 문서 기반 NoSQL 데이터베이스로, 유연한 스키마를 제공.
      • Cassandra: 대규모 분산 데이터베이스로, 고가용성과 확장성이 뛰어남.
    5. 보안
    • SSL/TLS: 모든 데이터 전송을 암호화해 보호.
    • OAuth: 제3자 서비스에 안전하게 인증을 제공하는 표준 프로토콜.
    • JWT (JSON Web Token): 사용자 세션을 안전하게 유지하면서 API 요청 시 인증 정보를 포함하는 방식.
    • IAM (Identity and Access Management): 사용자 인증 및 권한 관리를 담당하는 시스템으로, AWS IAM 등 클라우드 플랫폼에서 제공하는 서비스가 자주 사용.
    6. CI/CD (지속적 통합 및 배포)
    • Jenkins: 오픈 소스 CI 도구로, 코드를 테스트하고 배포 프로세스를 자동화.
    • CircleCI: 클라우드 기반 CI/CD 도구로, GitHub와 연동하여 빠르고 효율적인 배포를 지원.
    • Docker: 컨테이너 기반 환경에서 애플리케이션을 배포할 수 있게 해주는 도구로, 일관된 개발 환경을 제공.
    • Kubernetes: 컨테이너 오케스트레이션 도구로, 대규모 애플리케이션의 확장성과 복구 능력을 관리.
    7. 모니터링 및 성능 관리
    • Prometheus: 오픈 소스 모니터링 시스템으로, SaaS 애플리케이션의 성능을 실시간으로 모니터링.
    • Grafana: 데이터 시각화 도구로, Prometheus와 같은 모니터링 도구에서 수집한 데이터를 분석하고 시각화.
    • New Relic: SaaS 애플리케이션 성능을 모니터링하고 최적화할 수 있게 해주는 상용 도구.
    8. 기타 DevOps 도구
    • Terraform: 인프라를 코드로 관리하는 도구로, 클라우드 리소스를 효율적으로 관리하고 배포.
    • Ansible: 서버 구성 관리 및 애플리케이션 배포를 자동화하는 도구.

 

※ 함께 비교되는 용어

 

PaaS (Platform as a Service) 

PaaS는 개발자들이 애플리케이션을 개발, 테스트, 배포할 수 있도록 플랫폼(개발 환경)을 제공하는 서비스 모델이다. 개발자는 인프라를 직접 관리할 필요 없이, 플랫폼에서 제공하는 도구와 서비스를 사용하여 애플리케이션을 개발하고 배포할 수 있다. 플랫폼은 서버, 스토리지, 네트워킹, 데이터베이스 등을 포함하며, 개발자에게 필요한 런타임 환경을 제공한다.

 

IaaS (Infrastructure as a Service)

IaaS는 클라우드를 통해 기본 인프라(서버, 네트워크, 스토리지 등)를 제공하는 서비스 모델이다. 사용자는 물리적인 서버 대신 가상화된 컴퓨팅 리소스를 사용하며, 이를 통해 서버를 구축하거나 네트워크를 설정할 수 있다. IaaS를 사용하면 기업이나 개발자는 물리적 하드웨어를 직접 관리할 필요가 없으며, 필요한 리소스를 쉽게 확장하거나 축소할 수 있다.

 

SaaS, PaaS, IaaS 세 서비스 모델의 차이

  1. 관리 책임:
    • SaaS: 서비스 제공자가 모든 것을 관리 (애플리케이션, 데이터, 런타임, 서버 등)
    • PaaS: 사용자가 애플리케이션을 개발 및 배포하는 것을 관리하고, 인프라와 런타임 환경은 제공자가 관리
    • IaaS: 제공자는 기본 인프라만 제공하며, 사용자가 운영 체제, 데이터, 애플리케이션 등을 관리
  2. 사용 목적:
    • SaaS: 이미 완성된 소프트웨어를 사용하는 사용자
    • PaaS: 애플리케이션을 개발, 테스트, 배포하는 개발자
    • IaaS: 서버 및 네트워크 인프라를 직접 설정하고 운영하는 시스템 관리자
  3. 사용 사례:
    • SaaS: 최종 사용자 소프트웨어 도구 (Gmail, Dropbox, Salesforce)
    • PaaS: 개발 플랫폼 및 도구 (Heroku, Google App Engine)
    • IaaS: 클라우드 인프라 제공 (AWS EC2, Google Cloud Compute Engine)

 

'공부' 카테고리의 다른 글

금융 IT 용어  (14) 2024.09.25
소프트웨어 개발의 주요 패러다임과 기법  (5) 2024.09.25
JPA 란?  (2) 2024.09.23