[Cloud] : 03. PaaS


서론

  • 클라우드 서비스 유형 중 PaaS에 대한 포스팅이다. 이번 포스팅에서는 PaaS의 정의와 PaaS 솔루션을 구현하기 위한 기술들과 대표적인 상용 PaaS 솔루션에 대해서 알아보겠다.

01. PaaS 란?

image-center

[참고:xenonstack.com]


  • PaaS란 Platfrom as a Service의 약자로서 플랫폼을 서비스로 제공해주는 Cloud 서비스 유형이다. 여기서 말하는 플랫폼은 어플리케이션을 실행하기 위한 런타임을 말한다. 한마디로 내가 작성한 소스가 수행할 수 있게 컴파일 및 빌드, 어플리케이션이 필요한 자원 할당, 데이터베이스, 미들웨어 제공 등 어플리케이션이 수행할 때 필요한 모든 부분을 제공해주는것을 말한다. 이를 여기서는 플랫폼이라는 용어로 표현하고 있는것이다.

  • 한마디로 개발자는 실행 환경에 대해서 신경쓸 필요 없이 소스 개발만 하면된다는 이야기다. PaaS에서 어플리케이션 수행을 위한 실행환경 및 미들웨어를 제공해주기 때문이다.

image-center

[참고:https://hazelcast.com/]


02. PaaS 장점

  • 개발 시간 단축
    • 코딩에만 집중할 수 있는 환경을 제공하여 개발 시간을 단축 시킬 수 있다.
  • DevOps 환경 제공
    • PaaS를 사용하면 DevOps 환경을 제공 받을 수 있으며 DevOps 기능의 장점을 극대화하여 활용이 가능하다.
    • DevOp는 아래에서 간략하게 설명할 예정이니 아래 내용을 참고 바란다.
  • 어플리케이션 생명주기 단축
    • 사용자의 요구 사항에 대한 피드백을 빨리 반영할 수 있다.
  • 동적 확장 가능
    • PaaS가 기본적으로 제공하는 기능 중 하나가 바로 Scale Out/In 이다. 트래픽이 증가하면 트래픽이 증가한 어플리케이션을 복제하여 서버(Pod) 갯수를 증가시킨다.

03. DevOps

  • 위에서 PaaS의 장점 중에 DevOp 환경을 제공해준다고 했다. 이를 왜 장점을 뽑았는지에 대한 부분을 설명할려면 우선적으로 DevOp라는 용어에 대한 정의가 필요하다.

  • DevOps란 Developer와 Operation의 합성어로서 개발과 운영을 같이한다는 의미이다. 이를 이전부터 개발을 해온 경력자들이 듣기에는 그냥 SM하라는 의미로 받아 들일수 있다. 하지만 DevOps의 의미는 개발자가 운영을 하라는 조금만한 의미가 아니다. 계획 -> 코딩 -> 빌드 -> 테스트 -> 배포 -> 운영 -> 모니터링 일련의 프로세스에 대한 책임을 개발자(혹은 조직)이 가지고 개발하는 방법론인 애자일 방법론을 지원하는 기술로서, 위에 얘기한 프로세스를 하나의 파이프라인으로 만들어 관리할 수 있는 기술적 문화적 방법을 말한다.

  • DevOps를 사용하면 소프트웨어 생명주기를 단축하여 고객의 피드백을 단기간내에 반영할 수 있다.

  • 다만 DevOps를 사용하기 위해서는 자동화된 Tool이 필요하다. 자동화된 Tool이 없다면 DevOps가 가지는 장점을 활용할 수 없기 때문이다. 대표적인 DevOps Tool은 Jenkins, SCM Manager 등이 있다.

04. PaaS 구현 방식

  • PaaS를 구현하는 방식에 대해서 얘기해볼까 한다. 두가지인데 하나는 VM를 이용한 방법과 Container를 이용한 방법이다.

  • VM를 이용하여 구현한 방식 : Cloud Foundry
    • Cloud Foundry는 클라우드 파운드리 재단에서 관리하는 오픈소스 PaaS이다. Cloud Foundry는 Bosh(VM 관리를 위한 엔진)를 이용하여 각 역할(실행환경, Database, Service 등)을 위한 VM들을 생성한다. 그러면 일반 개발자가 실행환경이 필요하다고 하면 실행환경을 담당하는 VM의 영역 할당해줘서 실행환경을 제공해주는 방식이다.
  • Container를 이용하여 구현한 방식 : Openshift
    • Onpenshift는 Redhat에서 만든 PaaS로서 쿠버네티스 플랫폼을 활용한 PaaS이다. 이는 쿠버네티스 플랫폼을 활용하기 때문에 일반 개발자가 실행환경이 필요하다고 하면 해당 환경에 관한 Container(POD)를 활당하여 실행환경을 제공하는 방식이다. 현재는 이 방법을 제일 많이 활용한다.

05. 상용 PaaS 솔루션

  • 이전 포스팅과 마찬가지로 대표적인 PaaS 솔루션 몇가지에 대해서 알아보도록 하겠다.

  • Openshift image-center
    • Redhat에서 만든 오픈소스 PaaS로서 쿠버네티스 플랫폼 기반이다. 제일 장점은 오픈소스 진영에 대표격인 Redhat에서 개발한 PaaS라는 점과 쿠버네티스 플랫폼을 활용했기 때문에 일반 개발자가 접근하기 좋다는 장점을 가진다.
  • PaaS-TA image-center
    • PaaS-TA는 NIA에서 만든 국산 오픈소스 PaaS이다. 특징으로는 CF, K8S 기반을 둘다 제공하고 있으며 국산이라는 특징을 가지고 있다. 장점으로 뽑을 수 있는것은 앞으로 공공기관을 기준으로 널리 사용될 예정이기 떄문에 공공기관에서 많이 일하는 분이라면 활용도가 높을거 같다. 자세한 내용을 알고 싶으면 아래 홈페이지로 가서 확인해보기 바란다.

    • PaaS-TA 대표 홈페이지

      06. 끝마치며

  • PaaS에 대해서 포스팅 했다. 실제 개발자 레벨에서 제일 와닿는 클라우드 서비스 유형이 바로 PaaS이다. 경우 따라 다르겠지만 이러한 클라우드(PaaS)에 대한 활용 방법을 아는것이 선택이 아닌 필수가 되고 있다. 이전에 한가지만 잘해도 충분한 세상이었다면 지금은 여러가지를 동시에 잘해야하는 경쟁 사회에서 살고 있다. 그만큼 회사, 사회에서 원하는 스펙, 기술을 가진 사람이 없다는 얘기이기도 하다. 아직 겉핡기 식의 포스팅 밖에 못 올리고 있지만 조금더 깊숙한 기술들을 포스팅할 수 있는 사람이 되고, 이러한 글이 나와 같은 고민을 하는 사람들에게 도움이 되었으면 하는 바램이다.

댓글남기기