클라우드 서비스 관리
1. 개요
클라우드 컴퓨팅에 대한 조사 과제를 목적으로 차일피일 미루어 두었던 AWS에 대한 공부를 해보려고 한다.
공부하고자 하는 것은 AWS의 서비스의 종류, 서비스의 분류, 현재
팀 프로젝트에서 필요로 하는Google-Cloud-Service의 종류들 이다.
이번 과제를 통해 그동안 미루어 두었던 SaaS와 PaaS를 제공하는
구글openAPI와 AWS에서 클라우드컴퓨팅에 대한 개념을 얻어가고자
한다.
-cloud computing의 예시 google cloud platform 과 AWS-
클라우드 컴퓨팅을 기반으로 가능해진 새로운 아키텍쳐,
Serverless Architecture,
2. 클라우드 컴퓨팅의 개념
1. 정의
사용자들이 필요에 의해 컴퓨팅 자원을 사용할 수 있는 자원
이 공유되는 가상화 된 시스템[1]
Abstration(추상화) : 시스템의 상세사항들을 몰라도 시스
템을 이용하고 수정할 수 있다
Virtualization(가상화) : multi-tenancy 가능 , 시스템 자원
들은 빠르게 확장 가능
클라우드 컴퓨팅은
클라우드 서비스 플랫폼에서 컴퓨팅 파워, 데이터베이스 스토리지, 애플리케이션 및 기타 IT 리소스를 필요에 따라 인터넷을 통해 제공하고 사용한 만큼만 비용을 지불하는 것을 말한다[2].
아래서도 이야기 하겠지만 클라우드 컴퓨팅의 definition에
는 이미 IaaS(ex컴퓨팅 파워), PaaS(ex데이터베이스),SaaS(ex애플레케이션 서비스) 개념을 포함한 상위 개념이다(SuperType과 SubType의 관계)
2. 특징
클라우드 컴퓨팅 기술의 발전으로 생겨난 새로운 변화를 뽑으라 한다면 주저없이 Serverless Architecture를 말하겠다.
서버리스 아키텍쳐라는 용어는 재작년(2016년)에 처음 들었다. 프론트 엔드 개발자인 한 지인이 Firebase에 대해
설명 해줬는데 그러면서 서버 개발자 없이도 개발프로젝트를 진행할수 있다는 설명에 신선한 충격을 받았다.
비지니스 소프트웨어 개발에서 강력한 모습을 보이는 PaaS의 일종인 Firebase는 NoSql기반의 Restful Api 서비스 이다.
서버에 저장해 두어야 하는 비지니스 도메인 관련 데이터들을 Aws에서 클릭 몇번으로 서버를 구축하듯이
클릭 몇번으로 도메인 로직을 짤 수 있고 그에 맞는 API가 REST하게 설계되어서 제공된다.
요 몇년간 쏟아지는 수많은 이러한 PaaS 또는 SaaS 제품들을 보면서 이렇게 좋은 제품들을 내놓으면 나같은 하수는 어디서 밥 벌어 먹지 라는 생각이 든다.
클라우드 컴퓨팅은 Firebase와 같은 놀라운 제품들을 실현 가능하
게 해주었다.
이것은 자원의 추상화와 가상화가 가능하기에 이러한 제품이 나올
수 있었다.
가상화와 추상화를 통한 컴퓨팅 자원의 효율적인 분배 ,
이것이 클라우드 컴퓨팅의 핵심이다.
주제를 약간 벗어나는 내용이기는 하지만
클라우드 컴퓨팅은 기업입장에서 회계적,경제적으로도 이득을
취할 수 있다.
운영서버환경을 만들기 위해서는 결국 서버 컴퓨터라는 자산을
구입해야하는데 문제는 이 자산에 대한 관리가
까다롭다는 점이다.
서버 컴퓨터를 운영하기 위한 공간 유지비 , 관리자 제공, 자산에대한 감가상각 등 많은 부분이 있다. 클라우드 컴퓨팅을 활용하면 이러한 부분들은 서버비 라는 비용으로 처리될 수 있으며
이에 관련된 관리 또한 외부업체가 해주는 것이므로
매우 편리하다.
클라우드 컴퓨팅에서 자원을 어디까지 제공하느냐에 따라 3가지로 서비스를
분류할 수 있다.
IaaS(Infrastracture as a Service)아이아스 ,
PaaS(Platform as a Service)파스,
그리고 SaaS(Service as a Service)사스? 이다.
내 나름 비유를 해보자면
책상이라는 소프트웨어가 필요하다 그래서
클라우드 컴퓨팅이라는 책상가게에서 책상을 사러 갔다.
l IaaS라는 서비스는
목공소와 같다. 책상을 만들 수 있는 나무와 못과 망치 대패와 같은
자원들이 잔뜩 제공된다.
내가 원하는 도구로 책상을 만들 수 있다.(컴퓨팅 자원만 제공)
l PaaS라는 서비스는
책상을 구입할수 있지만 조립이 안되어있다. 내가 부품들을 구입해
서 책상을 조립하고 배달도 내가 직접 집까지 해야된다.
(End-user에게 제공될수 있는 제품이 아니라는 점을 비유)
l SaaS라는 서비스는
우리가 알고 있는 흔한 책상 가게다. 점원들이 있고 책상이 진열되
어있다. 배달이라는 서비스도 고객만족을 위해 제공된다.
(그 자체로 End-User에게 소비되는 제품 )
3. InfraStracture as a Service (IaaS)
1) definition :
공급업체는 고객이 종량제 방식으로 사용할 수 있는 클라우드의
스토리지, 네트워킹, 서버, 기타 컴퓨팅 리소스를 제공한다.
2) 기능[4] :
사용자는 전체 하드웨어를 구매하는 대신 온디맨드 방식으로 IaaS
비용을 지불 ,인프라는 처리 및 스토리지 니즈에 따라 확장할 수 있다.
기업은 자체 하드웨어를 구매하고 유지보수하는 데 필요한 비용을
절감, 데이터가 클라우드에 저장되어 있으므로 장애 최소화
관리 태스크를 가상화하여 다른 업무에 사용할 시간 확보
3) 사례:
1. AWS EC2[5]
아마존에서는 사전에 Pre configure 된 운영체제 이미지를
제공해, 사용자로 하여금 원하는 이미지와 소프트웨어를
직접 선택할 수 있게 하거나 또는 사용자가 직접 시스템에 대한 이미지를 AMI(Amazon Machine Image)라는 형태로 올려서 사용할 수 있도록 한다.
기본적으로 아마존 EC2는 하드웨어를 가상화하기 때문에
원하는 운영체제와 원하는 소프트웨어를 대부분 인스톨 할 수 있다. 이런 이유로 플랫폼에 대한 수용력이 높다는 장점을 가지고 있다. --조대협 개발자님 블로그 --
4. Platform as a Service(PaaS)
1) definition :
서비스 제공업체는 사용자가 애플리케이션을 개발하고 제공할 수
있는 클라우드 기반 환경에 대한 액세스를 제공합니다. 이러한 제공업체는 기본 인프라를 제공합니다.
2) 기능:
PaaS는 애플리케이션을 같은 환경에서 테스트, 개발, 호스팅하는
툴이 포함된 플랫폼을 제공
조직은 기본 인프라에 관해 우려할 필요 없이 개발에 집중
제공업체가 보안, 운영 체제, 서버 소프트웨어, 백업을 관리
여러 팀이 원격으로 작업하는 경우에도 원활하게 협업할 수 있도
록 지원
3) 사례 :
IaaS는 단순히 컴퓨팅 자원을 제공해주는 서비스이기때문에 예시가 거기서 거기다. IaaS는 자원의 공유와 자원을 사용한만큼 요금을 부과하는 그러한 시스템들에 대한 내용이 더 중점이라고 생각하는데
관련 내용을 쓰기 시작하면 너무 복잡해진다.
PaaS부터는 사례로 들 수 있는 내용들이 다양하다.
1. AWS RDB(relational db(OracleDB,Maria,Mysql)),
2. AWS DynanoDB(nosql db(mongoDB)),
3. AWS ElastiCache(고속 cacheDB(redis,카산드라))
대표적인 미들웨어 인 데이터베이스 시스템이 PaaS의 좋은 예제이
다.
AWS는 거의 모든 DataBase를 제공한다.
#개인적으로 사용해보고 편했다고 느낀 점은 [6]
EC2에 직접 설치해서 사용하거나 로컬에서 설치해서 사용할 때는
vi로 설정파일을 열어서 직접 필요한 내용들을 수정해야 되는데
이때 고질병인 오타를 쳐서 숨은 오타찾기 하느라 시간 안 뺏길 수 있다.
편리한 Web GUI를 제공해줘서 특정 DB플랫폼 아키텍쳐만 이해하고 있
으면 파일구조나 기타 환경문제로 인한 삽질을 줄일 수 있다.
4. AWS Lambda
이거는 정말 혁명적이다. Firebase가 개조가 불가능한 완제품이라면
AWS Lambda는 좀더 커스터마이징이 가능한 제품이다.
하나의 request요청을 코딩하여 배포하면 그 요청 횟수단위로
요금을 부과한다.
간단히 말하자면 기존 개발프로젝트 절차인
설계 -> 개발-> 배포 에서
개발 배포가 동시에 이루어지는 것이다.
AWS Lambda가 PaaS 인가 라는 질문은 PaaS의 정의를 어떻게
내리는가에 따라 바뀔 수 있다.[7]
5. AWS BeansTalk [8]
Amazon의 PaaS 서비스로, Java/Tomcat을 기반으로 한 PaaS 서비스이다. 개발자가 개발한, 웹 애플리케이션을 WAR 타입으로 묶어서 UPLOAD만 하면 사용할 수 있으며, Tomcat이 구동되는 JVM에 대해서 다양한 성능 설정을 할 수 있다.
아울러, 문제가 생기거나 튜닝이 필요할 때, Tomcat이 구동되는 EC2 인스턴스에 직접 접근하여, OS수준에서 장애 분석이나 대응을 할 수 있다.
기존의 Amazon 서비스들이 IaaS 단계에서 머물러 있었다면, BeansTalk 서비스는 Amazon이 향후 PaaS 시장을 적극적으로 공략할 하나의 가능성을 보여주는 서비스 이다.
5. Software as a Service(SaaS)
1. Definition:[9]
Outlook, Hotmail 또는 Yahoo! Mail과 같은 웹 기반 메일 서비스를 사용해온 경우 이미 SaaS 형식을 사용한 것이다. 이러한 서비스를 사용할 경우 일반적으로 웹 브라우저에서 인터넷을 통해 계정에 로그인하여 서비스를 이용한다.
메일, 공동 작업, 일정 등의 생산성 앱과 CRM(고객 관계 관리), ERP(전사적 자원 관리), 문서 관리 등의 정교한 비즈니스 응용 프로그램을 대여할 수 있다. 이러한 앱 사용에 대한 비용은 구독으로 지급하거나 사용량 수준에 따라 지급한다.
2. 사례
1) Google Cloud Platform
플랫폼이기 때문에 PaaS에 해당하는 서비스가 아니냐는 지적이 있을 수 있지만 SaaS와 PaaS에 대한 기준을 어찌 정의하는가에 따라 변할 수 있는 부분이고
다양한 IaaS , PaaS SaaS 들이 존재 한다
SaaS의 예제로는 지금 팀프로젝트에서 사용중인
a) Cloud Vision API
-강력한 이미지 분석 서비스를 제공해준다.-
-덕분에 팀프로젝트에서 openCV로 직접 이미지
분석 작업하는 노동을 덜 수 있었다 ㅠ .-
b) Google Map API
좌표정보를 기반으로 주변 지도와 시설물을 조회할수있다.-
c) Google Places API
필요한 시설이나 장소를 검색하여 좌표와 관련 서술정보를 얻는다
2) office365
Ms계열 문서작업 애플리케이션들은
이제 단순히 윈도우 위에 설치하여 사용하는 전용App이 아니다.
Web, Window, Android 와 같은 다양한 환경에서 자신의 클라우드 저장소를 가지고 동일한 서비스를 제공받을 수 있다.
(이론은 그러하지만 Web환경은 정말 사용불가다.
노트북 OS를 리눅스로 사용한다고 Web환경에서 office를 사용하였는데
극악의 호환성을 보여준다. 문서작업이 불가능해서 개발OS로는 정말 탁월하지만 아쉽게도 윈도우10으로 다시 갈아탔다. )
아키텍처의 각 레이어에 대한 설명 :
· 앱 및 시나리오
SaaS 기반 하이브리드 시나리오를 중심으로 Office 서버 제품 및 Office 365 대응 하는 해당 맞춤의 다양 한 가지가 있습니다.
o Exchange Online (Exchange Server 하이브리드)와 결합 하는 Exchange Server
o Skype 비즈니스 서버에 대 한 비즈니스 온라인 및 새로운 클라우드 PBX와 클라우드 커넥터 Edition 시나리오에 대 한 Skype와 결합합니다.
o SharePoint Server 2016 또는 SharePoint Server 2013 결합 된 SharePoint Online (여러 시나리오)
방법이 Skype와 Exchange Online Business Server 온-프레미스, 제품 간 하이브리드 시나리오에 대안 입니다.
· Identity
온-프레미스 Windows Server AD와 디렉터리 동기화를 포함할 수 있습니다. 또는 타사 id 공급자와 페더레이션 할 Azure AD를 구성할 수 있습니다.
· 네트워크
Microsoft Office 365 또는 Dynamics 365 대 한 피어 링와 기존 인터넷 파이프 대화 또는 ExpressRoute에 대 한 연결 구성 됩니다.
· 온-프레미스
Exchange, SharePoint 및 최신 버전으로 업데이트 되어야 하는 비즈니스를 위한 Skype에 대 한 기존 서버의 구성할 수 있습니다. 다음 하이브리드 시나리오를 위한 Office 365 대응 하는 자신의으로 조합할 수 있습니다.
[1] 강의자료 클라우드 개요.pdf
[2] 출처:[AWS]https://aws.amazon.com/ko/what-is-cloud-computing/
[3] https://azure.microsoft.com/ko-kr/overview/what-is-saas/
[4] 출처:[IBM] https://www.ibm.com/cloud-computing/kr-ko/learn-more/iaas-paas-saas/
[5] 출처:[조대협의 블로그] http://bcho.tistory.com/543
[6] 출처:[내생각]
[7] 출처:[구글링] https://www.quora.com/Is-AWS-Lambda--to-the-platform-as-a-service-model-now-directly-competing-against-Google-App-Engine-Azure-Heroku Amazons-strategic-entry
[8] 출처: [조대협의 블로그] http://bcho.tistory.com/543
[9] https://azure.microsoft.com/ko-kr/overview/what-is-saas/
[10] https://docs.microsoft.com/ko-kr/office365/enterprise/hybrid-cloud-scenarios-for-microsoft-saas-office-365