새로운 배움 — Iaas, PaaS, SaaS
이제는 인프라, 플랫폼, 소프트웨어도 서비스 받을 수 있는 시대
# 인프라, #플랫폼, #서비스
오늘 한일:
이번 글 부터는 더 이상 “데이터과학 유망주의 매일 글쓰기"는 없을 것이다. 나는 데이터 사이언스 과정을 나왔고, 이제는 Technical Writer로의 길을 가기로 결정했기 때문이다. Technical Writer 역시 개발자나 데이터 사이언티스트 만큼은 아니지만, 새로운 기술을 빠르게 이해하고 그것을 다른 사람에게 쉽게 설명할 수 있어야하는 만큼, IT분야에서 계속 변하는 기술의 변화를 따라잡을 수 있어야한다.
IaaS(Infrastructure as a Service), PaaS(Platform as a Service), SaaS(Software as a Service)는 최근 IT 분야에서 크게 화두가 되고 있다. 서버와 클라이언트로 구성되는 인프라를 직접 구축해야했고, 컴퓨터와 운영체제로 대표되는 플랫폼을 모두 갖추어야 했으며, 필요한 소프트웨어는 직접 깔아서 설치 및 유지보수해야 하는 시대는 지났다. 이 모든 것을 간편하게 제공하는 Amazon, Google, Microsoft같은 회사들이 생겨났기 때문이다.
그렇다면 인프라, 플랫폼, 소프트웨어를 서비스한다는 것은 정확히 어떤 의미일까? 오늘 블로그에서는 이 주제에 대해 다루어 보고자한다.
Iaas, PaaS, SaaS
IaaS(Infrastructure as a Service)
보통 IT에서 인프라라함은, 단순히 컴퓨터 하드웨어 및 소프트웨어를 넘어서서, 컴퓨터간 인터넷으로 연결되어, 특정한 서버에서 데이터를 처리해주고 클라이언트에 전달하는 네트워크를 말한다. IaaS는 말 그대로 이러한 인프라를 제공해주는 서비스라고 할 수 있다. 가장 넓은 범위의 서비스이며, 클라우드 기반 서비스로써, 저장(storage), 네트워킹(Networking), 가상화(Virtualization)등 필요한 만큼 지불하는 “Pay-as-you-go” 서비스를 말한다.
이 서비스의 장점은 유저에게 사내 인프라(On-Premise Infrastructure)에 대한 클라우드 기반 대안을 제시하며, 비싼 현장 리소스에 대한 비용을 지불하는 것을 막을 수 있다는 것이다. 알다시피, 사내인프라를 유지 보수하는 것은 시간적, 물리적으로 매우 많은 비용을 소모할 수 있다. 특히, 초기에 하드웨를 셋팅하는 과정에서 많은 비용이 들어갈 수 있는데, 이때 외부 IT IaaS 업체를 활용하면, 하드웨어를 잘 유지하면서 모든 것을 업데이트된 상태로 다룰 수 있다.
이 서비스는 필요한 만큼 구매하고, 추가적인 필요가 발생하면 추후에 더 구매할 수 있다. 즉, 인프라를 관리하는데 있어 확장성과 유연성이 높다. 또한, 다수의 유저들이 쉽게 접근할 수 있으며, 비용을 절감할 수 있다. 다루는 사람이 IaaS를 잘 몰라도, 플랫폼을 쉽게 접근하고 모니터링할 수 있도록 되어있다. 모든 규모 및 형태의 비즈니스에서 활용할 수있으며, 전체 인프라를 쉽게 관리할 수 있도록 해주고, 필요한 만큼 구매할 수 있기 때문에 비용면에서도 효율적이다.
IT업계에서는 직접 하드웨어나 인프라에 투자해야할 필요가 없어지는 추세이기 때문에, IaaS는 매우 안전하고 신뢰성 높은 대안이라고 할 수 있다. 또한, IaaS를 제공하는 업체는 대부분 실시간으로 빠른 고객 지원 서비스를 제공하고, 필요한 만큼 확장할 수 있게 해준다. 대부분의 IaaS 제공 회사들은 어플리케이션, 데이터, 런타임, 미들웨어, 운영체제 등을 직접관리해 준다. 대표적인 IaaS에는 AWS EC2, Google Compute Engine(GCE) 등이 있다. 특히, AWS EC2는 클라우드 기반 어플리케이션을 호스팅하려하는 회사들에게 매우 확장성이 높고 경제적인 솔루션을 제공한다.
PaaS(Platform as a Service)
일반적으로 플랫폼이라 하면 소프트웨어를 돌릴 수 있는 운영체제(O/S)와 이를 실행할 수 있는 물리적인 하드웨어(컴퓨터)를 포함해 지칭한다. PaaS는 가상화(Virtualization) 기법을 통해 이러한 소프트웨어와 하드웨어를 인터넷 기반으로 제공하는 서비스다. IaaS와는 다르게 어플리케이션 및 데이터를 제외한 부분만 관리해준다. PaaS 공급사들은 인터넷기반 하드웨어 및 소프트웨어 툴을 제공하며, 이용자는 이를 활용하여 원하는 어플리케이션을 개발할 수 있다. 주로 개발자들이 활용하며, 인터넷을 통해 서비스된다.
이 서비스의 장점은 개발자들에게 유니크하며 커스터마이징이 용이한 소프트웨어를 만들 수 있는 플랫폼을 제공한다는 것이다. 개발자들은 어플리케이션 개발을 위해 맨땅에 헤딩을 해야할 필요가 없으며, 시간과 돈을 매우 아낄 수 있다. PaaS는 어플리케이션의 모든 기본적 기능들을 처음부터 만들지 않고도, 원하는 어플리케이션을 개발할 수 있는 모든 툴을 제공한다. 마치 예를 들자면, 현실에서 Venue를 활용해 이벤트를 기회과는 것과 Venue를 만들어 이벤트를 기획하는 차이이며, 웹 개발에서는 Django/Flask등으로 웹 프레임워크를 활용하여 웹 어프리케이션을 만드는 것과 처음부터 프레임워크를 만들어 시작하는 것의 차이라고 볼 수 있다.
또한, 다수의 유저가 접근 가능하며 확장성이 높아, 비즈니스 규모에 적절한 리소스를 제공하는 회사를 고를 수 있다. 가상화 기반 서비스이며, 시스템 관리 지식이 없어도 쉽게 실행을 할 수 있다. 개발자들에게는 유니크한 어플리케이션을 만들 수 있는 비용 및 시간면에서 가장 효율적인 대안이라 할 수 있다. 무엇보다도, 개발자는 소프트웨어 업데이트 또는 보안 패치 관리 등의 잡무를 피할 수 있으며, 앱 개발에서 중요한 부분에만 집중할 수 있다. 즉, 개발자가 앱을 생성하고, 테스트하고, Deploy하는데 집중할 수 있게 해준다는 것이다.
대표적으로는 AWS Elastic Beanstalk, Heroku, Windows Azure 등의 서비스가 있다. 예를 들어, AWS Elastic Beanstalk은 AWS가 제공하는 EC2, RDS, S3등 약 100여 개의 클라우드 컴퓨팅 서비스 중 하나다. 대부분의 서비스는 IaaS로 활용될 수 있으나, 대부분의 고객은 자신이 원하는 서비스만 골라 구입한다. 하지만, 여러개의 다른 서비스를 관리하는 것은 굉장히 복잡하고 어려워지기 쉬운 작업이 될 수 있다. 이를 위해 AWS Elastic Beanstalk이 IaaS의 맨 위에서 하나의 레이어로 동작할 수 있으며, load balancing, scaling, 어플리케이션 모니터링을 자동으로 수행할 수 있다. 개발자는 자신의 어플리케이션을 업로드하고 유지하는 것만 신경쓰면된다.
SaaS(Software as a Service)
소프트웨어는 Windows, MacOS 같은 운영체제(O/S) 개념으로써, MS Office, Adobe Photoshop등의 어플리케이션을 돌릴 수 있는 환경을 말한다. 바로 어플리케이션을 돌릴 수 있는 소프트웨어 환경을 제공받을 수 있는 서비스라 할 수 있다. 역시 클라우드 기반으로 인터넷 상에서 제공되는 서비스이며, 주로 월 정액제로 판매된다.
직접 자신의 컴퓨터에 소프트웨어 어플리케이션을 설치하여 실행할 필요가 없고, 인터넷 상에서 로그인만하면 사용이 가능하다는 장점이 있다. 또한, 그 어떤 디바이스에서도 언제 어디서든 인터넷만 있다면 소프트웨어에 접근할 수 있다.
모든 사람이 자신의 권한에 따른 접근을 로그인을 통해 할 수 있으며, 소프트웨어의 설치 및 업데이트는 클라우드 상에서 이루어지기 때문에 걱정할 필요가 없다. 주로 월 정액제로 운영되기 때문에 확실하게 비용을 알 수 있으며, 이에 따라 예산내에서 어느 정도를 소비할지 계획할 수 있다. 대부분 구입한 플랜에서 소프트웨어의 유지보수 및 보안 관리 등이 포함되어 있기 때문에 사내 소프트웨어를 유지 및 보수하면서 발생할 수 있는 시간적, 비용적 소모를 줄일 수 있다. 고객의 수요에 따라 여러 다른 복잡도의 소프트웨어 서비스 플랜을 제공받을 수 있으며, 기반 소프트웨어를 빠르게 설치하고 실행할 수 있다. SaaS 제공 회사는 대부분 실시간으로 빠른 고객 지원 서비스를 제공한다. 즉, 소프트웨어의 유지보수 및 보안 관리 등을 걱정하지 않아도 된다. 모든 것이 서비스 회사를 통해 관리되기 때문에, 소프트웨어에 대한 여러가지 관리 문제를 신경쓰고 싶지 않고, 오직 잘 동작하게 끔 하는 것 만이 목적이라면 가장 좋은 솔루션이 될 수 있다.
SaaS의 개념을 좀 더 쉽게 설명하자면 이메일 서버를 예로 들 수 있다. 만약, 이메일 어플리케이션의 업데이트와 복잡한 설정을 직접한다면, 이는 굉장히 성가신 작업이 될 수 있다. 혹여나, 이메일 서버가 업데이트 안되어서 동작하지 않는다면 정말 끔찍한 일이 될 것이다. SaaS 서비스를 활용하면 이러한 문제를 걱정하지 않고 이메일 서비스를 활용할 수 있으며, 이메일 서버가 다운 될 가능성을 크게 낮춘다. 문제가 생기면, SaaS 제공자에게 바로 문의하면된다. 단순히 서비스에 대한 비용을 지불하는 것을 넘어서, 불필요한 작업 수행을 걱정할 필요없게 끔 심리적인 평안을 가져다 주는 솔루션이라고 볼 수 있다. SaaS의 대표적인 예로는 SalesForce, Dropbox, Slack 등이 있다.
앞으로 할일:
오늘은 IaaS/PaaS/SaaS에 대해 정리해 보았다. 인프라, 플랫폼, 소프트웨어 환경을 걱정하지 않아도 된다니 정말 편리한 시대에 살고 있다는 것을 실감하게 되었다. 결론적으로 모두 사내에서 자체적으로 운영하는(On-Premise) 그 어떤 것보다, 필요에 따라 훨씬 효율적인 솔루션이 될 수 있다는 것을 배웠다.
대부분의 비즈니스는 SaaS와 IaaS를 혼용하는 클라우드 컴퓨팅 서비스 모델을 활용하며, 개발자로 하여금 PaaS를 활용해 어플리케이션을 만들도록 권유한다고 한다. 경우에 따라서 컴퓨팅 서버의 모델이 복잡해 질 수는 있어도, 전체적으로 IaaS, PaaS, SaaS 모드 사내 호스팅 서비스가 제공할 수 없는 유연성 및 편의를 제공한다. 시스템 관리의 복잡도는 사내 > IaaS > PaaS > SaaS 순으로, 사내에서 관리하는 것이 그 어떤 형태의 서비스와 비교해보아도 더 어렵다고 한다. 이렇게 보니 규모 좀 되는 회사라면 셋 중 하나를 쓰지 않을 이유가 없어 보인다.
정리하면, IaaS는 커스텀 개발 어플리케이션을 호스팅하는데 있어 최대의 유연성을 제공하며 데이터 저장을 할 수 있도록 데이터 센터를 활용할 수 있게한다. PaaS는 IaaS의 맨 위에 만들어져, 시스템 관리의 필요성을 줄인다. 인프라 관리보다도 어플리케이션을 개발하는데 집중할 수 있게한다. SaaS는 특정한 비즈니스 필요를 충족하는 소프트웨어 서비스(웹사이트 및 이메일 등)를 빠르게 제공한다. 대부분의 SaaS 플랫폼은 IaaS 및 PaaS 플랫폼 위에 만들어진다. 회사의 필요에 따라 한 가지 클라우드 컴퓨팅 서비스 모델 만을 사용하거나, 두 가지 이상을 혼합하여 활용할 수 있다.
이제 나는 “데이터 과학 유망주”가 아닌 “배우는 자"라는 이름으로 새롭게 콘텐츠를 만들어 나갈 계획이다. 언제까지나 한 분야의 유망주로 남을 수는 없다. 한 때 데이터 과학 유망주였지만, 그 때의 배움에 대한 자세와 태도는 잃지 않았다. 내가 얼마를 배우든 부족할 것이다. 마치 알면 알수록 더 많은 것을 모르는 양자역학처럼, 나는 배우면 배울수록 내가 더 부족하다는 사실을 더 크게 느낄 것이다. 하지만, 그것은 오히려 더 넓은 세상을 보고 싶어하는 나의 욕구를 자극해 더 열정적으로 즐겁게 배울 수 있게한다.
앞으로도 내가 배우는 것들을 계속 기록해 나갈 것이다. 지금까지 약 200개가 넘는 글을 써 왔으니, 다음은 500개가 목표다. 물론, 단순히 양 뿐만 아니라, 글의 질도 높이면서 써나갈 것이다. 어쨌든 글쓰기는 나의 가장 좋은 학습 도구다. 내가 배운 것을 나만의 언어로 정리하면, 다른 사람에게도 설명하기 쉬워진다. 또한, 내가 나중에 스스로 복습할 수 있는 좋은 자료가 되며, 다른이들에게 정보를 전달하는 훌륭한 선생님이 된다. 글쓰기는 또한 나의 가장 큰 취미다. 글을 통해 나의 생각과 감정을 표현하면, 그것은 내 삶의 기록이며 역사가된다. 내가 써온 것들을 가끔씩 돌아보며 좀 더 나은 표현이 떠오르면 수정하기도 하고, “그때 그랬었지”하며 추억을 회상하면 나도 모르게 미소가 지어진다. 거기에서 얻는 소소하지만 확실한 즐거움은 매우 중독성이 강하다. 내 글쓰기의 흔적을 따라가다보면, 내가 어떤 것을 배우고 어떻게 성장해 왔는지 알 수 있다. 거기에서 내가 잊어버린 것을 다시 복습하거나, 전에는 발견하지 못한 새로운 것을 배우기도 한다. 그동안 내가 무엇을 배웠는지 되돌아불 수 있다는 것은, 글쓰기를 통해 얻을 수 있는 가장 큰 선물 중 하나다.
내 배움의 역사를 앞으로도 꾸준히 기록해 나갈 것이다. 나는 죽을 때까지 글쓰는 “배우는 자"로 남을 테니까.
참조: