현재 대부분의 서비스는 클라우드를 사용하고 있는데
클라우드가 등장한 배경과 장단점을 알아보려고 한다
Cloud ?
클라우드는 인터넷을 은유적으로 표현하는 말로
인터넷에 연결된 서비스 제공자의 데이터센터에 접속하여 서비스를 사용하는 것을 뜻한다.
Cloud Computing ?
서버, 데이터베이스, 네트워킹 등 컴퓨팅 리소스를 클라우드를 통해 관리하는 것을 의미한다.
Cloud는 언제 등장한 용어인가?
2006년 9월 구글의 직원 크리스토프 비시글리아가 당시 CEO였던 에릭 슈미트에게 회의에서 처음 제안했다고 한다.
클라우드를 사용하는 이유
다양한 서비스를 사용하는 사용자는 해당 서비스의 내부구조나 아키텍처 같은 거에 관심이 없다. 오로지 본인이 원하는 기능에만 집중한다.
개발자도 마찬가지다. 서비스 제공자가 집중해야 할 대상은 무엇일까?
서비스가 어떻게 구성되어 있나요?
파일, 데이터베이스 등 저장소에 있는 데이터를 서버에서 사용자가 원하는 형태로 가공한 뒤에 네트워크를 통해 사용자에게 전달한다.
즉, 기존의 개발자 관심사는
데이터를 어떻게 관리할 것인가?
서버를 어떻게 관리할 것인가?
네트워크를 어떻게 관리할 것인가?
위와 같이 존재하게 되는데 개인 PC, 사무실 서버에 따라 관리 방법과 고민거리가 다양해진다.
개인 PC에서 서비스할 경우
데이터를 어떻게 관리할 것인가?
- 개인 PC 디스크 용량 제한이 있는데, 데이터 백업을 어떻게 해야 하지? 백업된 데이터를 어떻게 불러오고 사용할까?
- 보안 이슈는 없을까?
서버를 어떻게 관리할 것인가?
- 개인 PC를 항상 켜두면 시스템 문제가 생기지 않을까? 장비를 끌 수 없을까? 서비스 중단은 어떻게 처리하지?
- 다른 프로그램을 사용해도 문제는 없을까? 게임을 해도 될까? youtube를 봐도 될까?
- 노트북을 두고 다녀야 하나? 서비스 중인 노트북을 켜두고 다닐 수도 없고, 분실하면 돌이킬 수가 없다.
- 윈도우가 자동 업데이트되면 운영 중인 서비스는 어떻게 되지?
네트워크를 어떻게 관리할 것인가?
- 어떻게 내 서비스에 접근하지?
- 내 PC엔 몇 명이나 접속이 가능할까? 트래픽이 초과되면 어떻게 되지?
- 장애가 발생하면 원격으로 해결이 될까?
사무실 서버로 서비스할 경우
데이터를 어떻게 관리할 것인가?
- 다른 팀과 데이터, 코드, 파일 등을 어떻게 공유하지? 공유하면 충돌이 생기지 않을까?
- 디스크가 깨지면 데이터도 유실되나?
서버를 어떻게 관리할 것인가?
- 장비관리, OS 설치 등은 누가 하지? 추가 장비가 필요하면 누가 누구한테 결제해야 하지?
- 서버의 전원이 나가면 어떻게 하지? 서버실 온도는 어떻게 관리할 것인가? 창문을 열어두나? 선풍기? 에어컨?
- 유휴 장비 보관장소는? 사무실에 공간이 남나? 추가 사무실을 계약해야 하나?
네트워크를 어떻게 관리할 것인가?
- 서버가 공격받으면 업무에 영향이 올까?
- 장비 관리는 누가 하지?
데이터센터를 활용할 경우
데이터를 어떻게 관리할 것인가?
- 이중화 구성은 어떻게 하지? 데이터센터도 이중화할 필요는 없을까?
- 자주 사용하지 않는 데이터를 장기 백업하려면 어떻게 해야 할까?
서버를 어떻게 관리할 것인가?
- Rack 관리를 위해 상주인력을 두어야 하나?
- 유휴 장비는 얼마나 두어야 할까?
- 배포 구성은 어떻게 하지?
네트워크를 어떻게 관리할 것인가?
- 데이터센터를 이용하는 다른 서비스가 DDoS 공격받으면 대역폭에 문제가 없을까? 우리 서비스에게 영향이 안 올까?
- 보안 구성(망분리, 방화벽, VPN, OPT 등)은 누가 하지? 보안 관제도 따로 둬야 할까?
* 법에서는? 개인 정보의 안정성 확보조치 기준에 따라 기술적/관리적 및 물리적 안전조치를 해야 할 의무를 법에 명시
관심사의 분리
서비스 제공자가 집중해야 할 관심사는 서비스의 Core Value 다.
ex) 사용자가 지진관측자료 서비스에 기대하는 것은, 내가 원하는 지진관측자료를 제공하는 가다.
내가 원하는 서비스(지진관측자료 등)를 제공하는가
어떤 대상에게 서비스할 것인가?
- 웹 / 앱 / API
- 인증 / 인가
사용자가 원하는 것은 무엇인가?
- 조회 조건 (기간, 지역, 규모 등)
- 데이터의 형태 (파일, JSON, XML, CSV 등)
- 데이터의 주기 (실시간, 일정주기)
- 데이터 정합성, 무결성 등 보장
그렇다면 데이터, 서버, 네트워크 고민은 어떻게 해야 할까?
기존의 고민들은 Cloud 제공 업체가 한다.
개인 PC, 사무실 서버, 데이터센터에서 고민하는 것은 Cloud 서비스가 대신한다.
데이터센터는 서버 유치형 데이터센터(IDC, 인터넷 데이터센터)와 클라우드 데이터센터로 구분되는데
서버 유치형 데이터센터는 기업에게 서버(서비스 서버나 데이터베이스 서버)를 제공해주고
클라우드 데이터센터는 클라우드 서비스를 통해 다른 기업들이 자신의 서비스를 만들 수 있도록 다양한 플랫폼을 제공하는데, 이를 IaaS(Infrastructure as a Service), PaaS(Platform as a Service), SaaS(Software as a Service)라고 한다.
즉, 클라우드 사용은
인터넷을 통해 컴퓨팅 리소스를 단순히 관리하는 게 아니라
관심사를 분리하여 우리가 집중할 대상에 보다 집중하기 위함이다.
참고