GCP 공부#7. GCP를 사용한 웹 시스템 아키텍처

정은경·2020년 1월 23일
0

Google Cloud Platform

목록 보기
7/7

인프라 아키텍처 : 애플리케이션 시스템을 서버에서 운용할 때에 여러 서버에 기능이나 역할을 나눠서 인프라 전체 구성을 정하는 것

웹3티어 아키텍처

웹 시스템의 대표적인 인프라 아키텍처 중 하나로 '웹3티어 아키텍처'가 있음
웹 시스템 서버들을 역할별로 웹 프런트 서버, 웹 애플리케이션 서버, 데이터베이스 서버 총 3개로 나누는 설계 사상을 말함

  • 웹 프런트 서버 (=웹 서버)
    클라이언트 웹 브라우저에서 송신된 HTTP 요청을 받아서 HTTP 응답을 반환하는 서버기능을 가짐
    요청을 받는 것이 주된 일이기에 높은 부하가 있을 경우는
    스케일아웃으로 처리 대수를 늘리고 부한 분산기 등으로 부하를 분산함

  • 웹 애플리케이션 서버
    웹 애플리케이션 서버는 업무 처리를 실행하는 서버임
    요청 내용에 따라서 결제 처리나 주문 처리 등 업무 애플리케이션 전체 실행을 담당

  • 데이터베이스 서버
    영구 데이터 관리를 하기 위한 서버
    영구 데이터에 접근하려면 높은 가용성이 필요하기에 보통은 클러스터링 같은 기술로 기존 기술을 확장함
    만일의 상황에 대비해서 데이터 백업이나 원격지 보관 등의 대책도 필요함
    웹 애플리케이션에서 데이터베이스로 접근하는 처리에는 많은 시스템 자원을 필요하므로 데이터베이스 서버는 시스템 전체의 병목이 되기 마련이어서 적절한 성능 튜닝도 필요함

클라우드에서 운용할 때는 각각의 서버 기능을 다른 인스턴스로 분산해서 부하에 따라 오토스케일링을 할 수도 있음

Google Cloud Platform 서비스를 사용해서 웹 애플리케이션 실행 환경을 만들기 위한 여러가지 방법들

  • 1) 독자적인 데이터베이스 요건이 있는 경우 (Compute Engine)
  • GCE의 가상머신 인스턴스에 웹 애플리케이션 서버와 데이터베이스 서버를 설치
  • 가상머신 인스턴스에 데이터베이스의 미들웨어를 도입하거나 설정해야 하는 수고가 발생하지만, OS 수준에서 미들웨어를 튜닝할 수 있으므로 설정의 자유도가 높아짐
  • 그렇다고 해도 온프레미스 서버와 같은 방법으로 구축하고 운용하는 패턴이기 때문에 GCP의 혜택을 누리기 어려운 패턴임
  • 2) 데이터베이스 서버의 운용 부하를 줄이고자 하는 경우 (Compute Engine + Cloud SQL)
  • GCE의 가상머신 인스턴스에 웹 애플리케이션 서버를 설치
  • 웹 애플리케이션에서 다루는 그러나 영구 데이터는 MySQL 완전 관리형 서비스인 Cloud SQL을 사용해서 관리
  • Cloud SQL을 이용하면 데이터베이스 서버의 확장이나 백업 설정 등의 구축과 설정이나 정기적인 백업 등의 운용에 필요한 작업 수고를 줄일 수 있음
  • 3) 데이터를 효율성있게 관리하고자 하는 경우 (Compute Engine + Cloud SQL + Cloud Storage)
  • 애플리케이션이 다루는 영구 데이터를 데이터 종류나 용도에 따라 유연하게 관리하고자 할 때는 Cloud SQL과 Cloud Storage를 사용해서 데이터를 관리함
  • Cloud Storage는 높은 가용성과 내구성을 가지는 오브젝트 스토리지로, 전 세계에 에지캐시를 가짐. 그렇기 때문에 이미지나 동영상 등의 큰 데이터 전달에 적합함
  • 4) 높은 확장성을 실현하고자 하는 경우 (Kubernetes Engine + Cloud Datastore)
  • 요청의 많고 적음에 변동이 있고, 시스템의 규모를 상황에 따라 유연하게 스케일업하거나 스케일다운해서 효율성 있게 운용하고자 할 경우는 컨테이너 이용이 적합함
  • GKE(Google Kubernetes Engine)은 Docker 컨테이너를 운용하기 위한 오케스트레이션 도구인 Kubernetes의 완전 관리형 서비스임!
  • GKE를 사용해서 웹 애플리케이션을 Docker 컨테이너에서 동작시키는 것으로 높은 확장성을 가지는 시스템을 만들 수 있음
  • 영속 데이터 저장은 Cloud Datastore를 이용함
  • 5) 짧은 시간에 새로운 시스템을 개발하고 운용 비용을 들이고 싶지 않은 경우 (App Engine)
  • PaaS 서비스인 Google App Engine (GAE)에서는 웹 서버, 데이터베이스 서버, 메모리 캐시 서비스, 작업 대기열과 같이 애플리케이션 개발에 필요한 기능이 이미 준비되어 있음
  • 기존 시스템을 옮기는 것이 아니라 새롭게 애플리케이션을 개발하는 경우는 GAE를 사용하면 인프라 구축과 관리가 필요 없기 때문에 효율적으로 개발에 몰두할 수 있음
  • GAE는 내부적으로 컨테이너를 이용하고 있고 특별한 설정 없이 오토스케일이 가능함
profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글