[웹 개발자를 위한 대규모 서비스를 지탱하는 기술]Chapter 11

zzarbttoo·2021년 8월 16일
2

이 글은 절판도서 "웹 개발자를 위한 대규모 서비스를 지탱하는 기술" 을 개인적인 용도로 정리한 글입니다. 모든 내용을 정리한 것이 아니라 필요한 부분만 정리했다는 점 양해 부탁드립니다
문제/오류가 있을 시 댓글로 알려주면 감사하겠습니다


| 대규모 데이터 처리를 지탱하는 서버/인프라 입문

하테나의 인프라 스트럭처

  • 웹 서비스가 인프라에 요구하는 것
  • 하테나의 인프라
  • 확장성, 다중성, 시스템 효율을 어떻게 확보할지에 대해 말한다
  • 11장에서는 웹서비스, 클라우드 자체 구축 인프라 등 몇가지를 비교하면서 하테나 인프라 특징을 알아본다

엔터프라이즈 vs 웹서비스

응용 범위로 보는 차이

  • 정보시스템에서는 엔터프라이즈 영역이 압도적으로 크고 웹서비스는 아직은 적은 영역이다 그리고 둘이 요구하는 것은 다르다
  • 그리고 엔터프라이즈의 시스템 다운이 좀 더 치명적이다
  • 때문에 시스템화해야 할 대상 영역의 차이에 따라 내부에 요구되는 조건도 달라지고, 이에 따라 세부적인 기술도 달라지게 된다

| 웹 서비스의 특징(엔터프라이즈와 비교)

  1. 트래픽
  • 엔터프라이즈에서는 거대한 경우가 적지만 웹 서비스의 경우는 어마어마한 트래픽이 바랭할 가능성이 있다
  1. 성장성
  • 엔터프라이즈는 실제 비즈니스와 연결돼이으므로 급격하게 성장하지는 않는다
  • 반면 웹서비스는 폭발적으로 성장할 수 있다(물론 그런 웹서비스의 비율은 줄어들었다)
  1. 신뢰성
  • 엔터프라이즈는 장애가 발생할 경우 치명적이다(사람이 죽거나, 손해배상을 해야할 경우가 있다)
  • 그에 따라 높은 신뢰성이 요구된다
  • 서비스는 그에 비해서는 적은 신뢰성이 요구된다
  1. 트랜잭션(DB)
  • 엔터프라이즈는 정합성을 정확히 유지해야한다
ex) 특정 계좌에서 다른 계좌로 이체할 때는 한쪽에서 인출했는데 다른 한쪽은 이체해서 늘려놓지 않는든가의 부정합이 발생하면 금전적 손해가 발생해서 굉장히 큰 문제가 된다 
  • 이와 같은 문제를 피하기 위해 DB 처리에 있어 트랜잭션 처리를 이용해서 정합성을 명확히 담보하면서 처리하게 된다
  • 웹서비스는 일시적으로 정합성이 일치하지 않는 경우도 허용하도록 처리하는 경우도 있다
  • 그 대신 비용을 줄이거나 적은 서버 대수로 트래픽이 많이 발생하도록 설계를 한다

웹 서비스의 인프라

중요시 되는 세가지 포인트 : 저비용 고효율, 설계, 개발속도

  1. 저비용 고효율
  • 저비용과 신뢰성은 상반관계이므로 100% 신뢰성은 목표로 하지 않ㄷ록 한다
  • 비용을 들이면 신뢰성을 높일 수 있지만 이 부분을 접고 효율을 추구하는 것이 좋을 수도 있다
  1. 확장성, 응답성에 대한 설계를 중요시한다
  • 서비스의 성장속도를 모르거나 사용자 경험(UX)를 위해 서비스의 응답성이 중요한 경우도 있다
  • 100% 신뢰성을 추구하기 보다는 장래를 위해 제대로 확장할 것
  • 99% 시간대는 양호한 응답이 이루어지도록 하는 등 기술적으로 중점을 둔 설계가 중요하다
  1. 웹 서비스의 경우 서비스 사양이 바뀌는 경우가 많고, 이에 유연하게 대응할 수 있는 인프라여야 한다
  • 엔터프라이스 시스템의 경우 특정서비스의 사양을 추가할 때 오랫동안 준비해서 서비스하는 경우가 많다
  • 웹서비스의 경우에는 빠른 변화가 중요하다
  • 개발 속도를 중시한 인프라로 구성해가는 것도 매우 중요하다
애플리케이션 배포를 가능한 한 간편하게, 배포할 때 마침 처리 중인 요청에 영향이 없도록 하고 필요한 서버를 즉시 추가할 수 있도록 해두며 배포한 코드에 문제가 발견됐을 때에는 곧바로 이전 상태로 돌아갈 수 있도록 대처한다 

클라우드 VS 자체 구축 인프라

클라우드

  • 장점 : 클라우드 컴퓨팅은 저가로 사용하며 확장해갈 수 있다는 장점이 있다(확장의 유연성)
  • 단점 : 각각의 클라우드 서비스마다 독자적인 사양에 대응할 필요가 있다

자체 구축 (옛날 내용이므로 지금과는 다소 차이가 있음)

  • 하드웨어 구성 유연, 서비스 요청 유연 대응, 병목현상 직접 제어

자체 구축 인프라와 수직 통합 모델

수직 통합 모델 : 물리적 계층부터 서비스 설계까지 모든 것을 한 회사에서 구축하는 모델 ex) Google, Amazon
수평 분산 모델 : 각 계층마다 다른 기업이 시스템을 제공하는 것으로 각각이 모여 전체 시스템이 구축되는 모델 ex) Microsoft와 같은 OS와 오피스군 과 가틍ㄴ 일부 애플리케이션에 특화된 기업

| 하테나 북마크 시스템 구성

  • 전체적인 구조는 (리버스)프록시와 애플리케이션과 DB라는 3층 구조로 되어있다
  • 일부 서버는 요청 특성(사용자용, 봇용)에 다라 나뉘고 있어 안정적으로 높은 성능을 발휘할 수 있도록 한다
  • 캐시서버는 Squid 2대, memcached 5대가 있는데 각각의 캐시를 잘 사용하는 것도 중요하다
profile
나는야 누워있는 개발머신

0개의 댓글