다음은 웹 개발자를 위한 대규모 서비스를 지탱하는 기술을 읽고 정리한 내용입니다 🙌


[강의29] 엔터프라이즈 vs. 웹 서비스

엔터프라이즈 vs. 웹 서비스 - 응용범위로 보는 차이

웹 서비스의 특징 - 엔터프라이즈와 비교

  • 트래픽 - 엔터프라이즈에 대규모 트래픽이 일어날 일은 많이 없지만 웹 서비스에서는 대규모 트래픽이 일어나고는 한다.
  • 성장성 - 비즈니스와 연관된 엔터프라이즈는 급격히 성장하지는 않는다. 웹 서비스와 같은 경우는 폭팔적 성장이 가능하다.
  • 신뢰성 - 사람의 목숨이나 돈에 관련된 일이 많기 때문에 높은 신뢰성이 요구된다. 웹 서비스는 인명이나 돈과 깊게 관련 없는 경우가 더 많기 때문에 그정도의 신뢰성이 중요하지는 않다.
  • 트랜잭션 - 신뢰성과 비슷한 맥락의 이야기지만 더 DB에 한정되서 이야기 한다.
    • 엔터프라이즈는 데이터의 정합성이 매우 중요하다. (은행에서 돈 예시)
    • 웹 서비스는 (블로그와 같이) 정합성이 일치하지 않아도 큰 문제가 생기지 않는다.

웹 서비스의 인프라 - 중요 3 포인트

  1. 저비용 고효율
    • 항상 trade-off가 있기 때문에 저비용을 고수하기 위해서는 희생되는 무언가가 있다.
    • 이때 100% 신뢰성을 위해 많은 비용을 치루기보다 비용을 낮춰서 효율을 추구하는 방향을 택한다.
  2. 확장성이나 응답성 등의 설계를 중요시
    • 성장속도를 모르거나 서비스의 응답성이 중요한 경우가 많다.
    • 이때 신뢰성보다 장래를 위한 확장을 고려한 설계를 한다.
    • 즉, 대부분의 시간에 양호한 상태의 응답이 이루어질 수 있도록 하는 것
  3. 바뀌는 서비스 사양에 유연하게 대응할 수 있어야한다.
    • 빠르게 바뀐 사양에 대해서 적용하고 배포할 수 있어야한다. 빠르게 변하는 시장이기 때문에 타이밍이 중요하다.
    • 또한 배포를 간편하고 빠르게, 처리중인 요청에 영향이 안가도록 하는 것도 중요하다. 문제가 생기면 바로 이전코드로 돌아갈 수 있어야한다.

[강의30] 클라우드 vs. 자체구축 인프라

클라우드 컴퓨팅

  • Amazon EC2 같은 것들을 말한다.
  • 자체구축 인프라 vs. 클라우드 컴퓨터가 대두이다.

클라우드의 장단점

  • 저가로 사용하면서 확장해갈 수 있다. 즉 확장성이 가장 큰 장점이다.
  • 단점
    • 각 클라우드 서비스마다의 독자적인 사양에 대응해야한다.
    • 각 클라우드 서비스에서 지원하고 있는 알고리즘 사양에 대해서 더 자세히 알아가야하며, 마음대로 커스텀하지 못하는 부분이 있을 수 있다.
    • 그냥 노드가 죽어버릴 수도 있다 (?옛날 이야기?)
  • 소규모 프로젝트나 학생 사용하는 용도는 클라우드 컴퓨팅이 좋은 분야라고 하는데 현재는 거의 대세가 되어 버린 것 같다.

자체구축 인프라의 장점

  • 하드웨어 구성을 유연하게
    • 클라우드 컴퓨팅의 경우 사양에 상한선이 있는데 자체 구축인 경우 ssd를 도입하는 등 커스텀할 수 있다.
  • 서비스로부터 요청에 유연하게 대응
    • 대수를 늘릴 뿐만 아니라 네트워크적으로 가까운 구성을 갖추는 등등을 할 수 있다.
  • 병목현상을 제어할 수 있음
    • 병목 현상이 있을때 클라우드 컴퓨팅 회사의 사양이나 알고리즘에 의존적을 수 밖에 없지만 자체구축이면 자체적으로 제어가 가능하다.

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

  • 수직통합 모델이란?
    • 물리적 계층부터 서비스 설계까지 모든 것을 한 회사에세 구축하는 모델
  • 수평분산 모델이란?
    • 각 계층을 다른 기업이 시스템으로 제공하는 것