꾸준하고 즐겁게
Cloud Service란 무엇일까 본문
On-premise에 대해서
서비스를 제공하기 위해, 회사 내부에 서버를 구입하고 네트워크를 구축하는 것이다.
서버 안에 OS부터 설치하고 OS위에 아파치, 톰캣, 제우스 등의 Webserver software를 설치했다.
포트는 80으로 들어오고, 프로토콜은 HTTP, HTTPS를 사용했다.
그리고 그 위에서 돌아갈 프로그램의 코드를 짜야하는데, 코드를 짜기 위해서는 언어가 필요하고,
언어에는 Java나 Python 등 또 여러가지가 있다.
서비스를 한다.
많은 사람들이 이용하여 트래픽이 몰리게 되면 기존 서버의 CPU, Memory, 하드디스크의 용량을 늘려야한다.
이것을 Scale up이라고 한다.
혹은 서버를 더 구입해서 똑같은 서버를 더 만들어야한다.
후자의 경우 접속이 몰리면 서버 여러 대에 트래픽을 분배해줘야한다.
이를 설치하는 게 Load balancer다.
이런 환경을 구축해주는 사람들을 시스템 엔지니어라고 불렀다.
서버만 있으면 되는 게 아니다. 데이터베이스도 있어야한다.
정보를 저장할 공간이 필요하다.
서버와 연결해서 정보를 저장하게 한다.
DB도 연결이 너무 많아서 문제가 되거나 용량이 부족할 수 있다.
그러면 DB도 서버처럼 늘려줘야한다.
DB는 회원 정보 등 중요한 정보들을 포함하고 있는 경우가 많아 복제까지 따로 해두어야한다.
여기까지 전통적이고 일반적인 기업 인프라 구축 방식을 On-premise라고 한다.
서버를 전부 회사에 가지고 있다.
그것만 봐도 단점은 이루 말할 것도 없다.
AWS에 대해서
그러한 기존의 방식을 보완하기 위해 만들어진 게 Cloud service다.
AWS가 Cloud service 업체로는 가장 잘 나간다고 한다.
이 다음 글에서 AWS의 ec2 관련 글을 올릴 예정이고, 내가 AWS를 이용하고 있기 때문에 AWS를 기준으로 얘기하겠다.
클라우드에서의 서버 이름을 AWS는 ec2라고 했다.
물론 다른 클라우드 서비스에서는 다른 이름으로 불린다.
서버 뿐만 아니라 Database도 클라우드에서 제공한다.
AWS에서는 RDS라는 이름을 가지고 있다.
트래픽을 분산해주는 Load balancer는 Elastic Load balancer라는 이름을 가지고 있다.
사용자들이 접속하면, HTTP나 Restful API로 접속한다.
최근에는 설계 자체를 RestfulAPI로 많이 한다.(유지보수가 쉬워서)
로드밸런서가 있고, 서버가 있고, 데이터베이스가 있으면 누구라도 웹서비스를 할 수 있다.
이걸 조금 더 똑똑하게 만든 게 AWS의 Elastic beanstalk이다.
인스턴스 ec2를 하나만 생성해서,
특정 조건에 의해 기존의 것과 똑같은 ec2를 복제한다.
이런 규칙을 Elastic beanstalk에서 정한다.
예를 들어, 유저가 많아지면 ec2가 복제되어서 하나 더 생기고, 다시 트래픽이 다시 줄면 생겨났던 ec2를 삭제한다.
비용을 관리할 수 있게 해준다.
그리고 하나의 서버가 다운되더라도, 다른 서버가 바로 똑같은 복제본을 만들어서 다른 지역에서 실행한다.
심지어 어떤 서버가 재난 등으로 없어지더라도, 다른 서버가 자동으로 가동이 되어서 트래픽을 연결시켜주게 되어있다.
글로벌 서비스 같은 경우에, 지리적으로 가까이 있는 곳에 있는 서버에 접속해야 응답 속도가 빠르다.
각 지역에 있는 서버로 똑같은 서버를 배포한다.
그러면 전세계 사람들이 빠르게 사용할 수 있다.