SaaS (Software-as-a-Service)
: 애플리케이션이 클라우드 서버에 올라온 상태. 즉, 필요한 소프트웨어가 원격 호스팅 서버에 내장되어 있고, 사용자는 이것을 활용하는 방식. 구글 독스를 그대로 사용하는 것을 떠올리면 좋다.
PaaS (Platform-as-a-Service)
: 애플리케이션을 제작하기 위한 도구와 장비들이 서버에 탑재되어 있는 상태. 즉, 위의 사진에서 비유하자면 내가 구글 독스를 만들어야 한다면 이를 위한 개발 환경이 구축되어 있어서 코드만 작성하면 되는 상태로 서비스를 제공하는 것을 뜻한다. AWS의 Elastic Beanstalk가 대표적인 예다.
사실 PaaS와 IaaS가 계속 차이가 이해가 되지 않아 구글링하다가 Elastic Beanstalk 설명영상을 발견하게 되었다. 거기에 대한 내용은 아래와 같다. 아래 그림을 보면 PaaS가 더 명확하게 이해될 것이다.
만약 직접 서비스를 클라우딩으로 구현한다고 하면,
AWS 기준으로 보자면 S3구성하고, RDS구성하고, EC2 구성하고, 로드밸런서, 방화벽, DNS 등등 모든 과정을 다 해야 한다.
이게 바로 IaaS이다.
하지만 Elastic Beanstalk와 같은 PaaS를 사용한다면,
위에서 IaaS 당시에 했어야 했던 모든 작업들을 모두 자동화하여 제공해준다. 즉, 개발자가 집중해야 하는 것은 오로지 웹 어플리케이션에 관련한 코드를 제작하고 이것을 Elastic Beanstalk에 탑재할 수 있도록 압축하여 전달하는 것만 남을 뿐이다.
그 이후에는 네트워킹, 라우팅, EC2스케일링, 로그 수집 등등 모든 설정들이 이에 맞춰서 자동으로 이루어진다. (물론, 설정해줄 수도 있다. 예를들어 대표적으로 사용량에 따라서 오토스케일링을 해주면서 로드밸런싱을 붙일 것인지, 단일 인스턴스 하나로 버틸 것인지 역시 자유롭게 선택하면 된다)
Elastic Beanstalk에서 이 자동적으로 설정 될 환경의 기준을 정해주는 것도 가능하다. 옆에 보이는 것처럼 Ruby, Windows, Docker 등 다양한 환경을 기준으로 내 어플리케이션이 돌아갈 수 있도록 설정이 가능하다는 점이 인상깊다.
IaaS (Infrastructure as a Service)
: 위에서 이미 설명된 것과 같다. 역시 비교하는 게 제일 이해가 빠르게 되는 것 같다.
On-Premise
: 말 그대로 클라우드에서 대여했던 모든 하드웨어 소프트웨어 등등을 회사 내에서 설치하여 사용하는 방식. 단순히 장비만의 문제가 아닌 보안을 위한 방화벽 설정이나 IDS/IPS와 같은 검증 및 차단 시스템도 다 구축해야 한다는 점에서 전문인력이 많이 필요로되는 형태.
** DMZ Zone : 외부 네트워크에서 내부 네트워크로 바로 접근하는 것은 위험하기 때문에 접근에 제한을 걸기 위해 설정되는 영역.
*** IDS/IPS