본문으로 건너뛰기

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

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

엔터프라이즈 vs 웹 서비스

엔터프라이즈와 웹 서비스의 차이, 웹 서비스의 특징을 살펴보겠습니다.

  1. 트래픽의 경우는 엔터프라이즈에서는 극히 거대한 규모가 되는 경우는 드물지만, 웹 서비스의 경우는 특히 글로벌하게 전개되고 있는 서비스에서는 어마어마한 트래픽이 발생할 가능성이 있습니다.
  2. 성장성, 다시 말해 성장속도에 관한 것입니다. 엔터프라이즈에서는 실제 비즈니스와 연계되어 있으므로 그다지 급격하게 성장하는 것은 아닙니다. 예를 들면 전화 네트워크가 갑자기 전년대비 100% 증가한다거나 그런 시대도 아닐 뿐더러, 은행 구좌 수가 전년대비 수십 % 증가하는 등의 일은 거의 일어나지 않습니다. 엔터프라이즈 계열에서는 성장이 어느 정도 한정되어 있고, 성장할 때에도 착실하게 늘어가는 경향이 있습니다. 웹 서비스의 경우는 폭발적으로 성장할 가능성이 있어서 전년대비 100%, 200%, 300% 증가와 같은 일도 드물지 않습니다.
  3. 신뢰성. 엔터프라이즈에서는 장애가 발생해서 데이터가 없어지거나 하면 실제로 돈이 사라지기도 합니다. 때문에 만일 장애가 발생되면 피해자로부터 손해배상청구를 받게 되거나, 구해야 하는 사람의 목숨을 구하지 못하는 등의 사태도 발생할 수 있습니다. 그런 의미에서 굉장히 높은 신뢰성이 요구됩니다. 그러나 웹 서비스는 최근에는 유료 서비스도 늘어나고는 있지만 인명이나 돈과 그렇게 직접적으로 관련되는 일은 적고, 특히 블로그나 소셜 북마크, Twitter와 같은 미니 블로그에서는 가령 일시적으로 볼 수 없게 되더라도 잠시 기다려 주시기 바랍니다라고 할 수가 있어서 신뢰성에서는 그렇게 높은 레벨이 요구되지 않는다는 특징이 있습니다.
  4. 트랜잭션은 DB에 대한 이야기입니다. 엔터프라이즈에서는 데이터 간 정합성을 정확히 유지해야만 합니다. 예를 들어 특정 구좌에서 돈을 인출해서 다른 구좌로 이체할 때, 한쪽에서는 인출했는데 다른 한쪽은 이체해서 늘려놓지 않는다든가, 한쪽은 늘려놓았는데 다른 쪽은 인출하지 않는 등의 부정합이 발생하면 금전적인 손해가 발생해서 굉장히 큰 문제가 됩니다. 이와 같은 문제를 피하기 위해 DB 처리에 있어서 트랜잭션 처리를 이용해서 정합성을 명확히 담보하면서 처리하게 됩니다. 그러나 웹 서비스에서는 일시적으로 정합성이 일치하지 않는 경우도 허용하도록 처리하는 경우도 있습니다. 예를 들면 블로그를 작성한 후에 RSS 리더로 포착하기까지 시간지연이 있는 경우는 드물지 않습니다. 이와 같이 단기적으로 데이터 정합성을 잃게 되어도 죄송합니다 정도로 끝나기도 합니다.

웹 서비스의 인프라

웹 서비스의 인프라에서 중요시되는 것은 어떤 점일까요? 포인트를 세 가지 소개합니다.

  • 첫 번째는 저비용 고효율이 중시된다는 점입니다. 비용을 들인다면 얼마든지 꽤 높은 신뢰성을 추구할 수는 있지만, 이 부분은 과감히 접고 오히려 비용을 낮춰서 효율을 높이는 방향으로 추진하고 있습니다.
  • 두 번째 포인트로는 확장성이나 응답성 등에 대한 설계를 중요시한다는 점입니다. 서비스의 성장속도를 모르거나 사용자 경험(UX)을 위해 서비스의 응답성이 중요한 경우도 있습니다. 따라서 100% 신뢰성을 추구하기보다 장래를 위해 제대로 확장할 것을 중시합니다.
  • 마지막으로 세 번째 포인트는 웹 서비스에서는 서비스 사양이 이리저리 바뀌는 경우가 있다는 점입니다. 여기에 유연하게 대응할 수 있는 인프라여야만 합니다. 개발속도를 중시한 인프라로 구성해가는 것도 매우 중요한 점입니다. 예를 들면 애플리케이션 배포를 가능한 한 간편하게 하고, 또한 배포할 때 마침 처리 중인 요청에 영향이 없도록 하고, 필요한 서버를 즉시 추가할 수 있도록 해두며, 배포한 코드에 문제가 발견됐을 때에는 곧바로 이전 상태로 돌아갈 수 있도록 대처하고 있습니다.

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

클라우드 컴퓨팅

강의 29에서 언급한 대로 웹 서비스는 저비용 고효율이 중시되는 영역이며, 이 점에서 2008년경부터 유행하고 있는 클라우드 컴퓨팅, 클라우드도 주목해야 할 키워드가 되고 있습니다. 몇몇 블로그 등에서도 클라우드 컴퓨팅과 자체구축 인프라에 대한 비교가 화제가 되고 있습니다.

클라우드의 장단점

클라우드 컴퓨팅은 저가로 사용하면서 확장해갈 수 있다는 특징이 있습니다. 클라우드의 최대 장점은 확장성에 있습니다.

한편, 단점은 Amazon EC2 등 각각의 클라우드 서비스마다 독자적인 사양에 대응할 필요가 있다는 점입니다.

자체구축 인프라의 장점

자체적으로 인프라를 관리할 때의 장점은 다음과 같은 점이 있습니다.

  • ❶ 하드웨어 구성을 유연하게 할 수 있습니다.
  • ❷ 서비스로부터의 요청에 유연하게 대응할 수 있습니다.
  • ❸ 병목현상을 제어할 수 있습니다.

유연한 하드웨어 구성의 예로, 메모리 탑재량을 늘렸으면 하는 요구가 높아지고 있다는 점을 들 수 있습니다. 클라우드 컴퓨팅의 경우는 상한선이 정해져 있으므로 그 부분에서 제어를 자유롭게 할 수 없습니다.

또한 자체적으로 인프라를 구축하면 SSD(Solid State Drive)를 도입해서 I/O 성능을 단번에 올리는 등 다양한 선진적인 하드웨어를 투입해서 서버 한계를 점점 높일 수 있습니다. 그러나 클라우드 컴퓨팅을 사용하고 있는 한 주어진 선택방안 내에서 선택할 수밖에 없고, 그 안에서 해결해야 한다는 제약이 있는 상태에서 운영해야 하므로 자체구축 인프라에서 실현 가능한 레벨의 유연성은 잃게 됩니다.

서비스로부터의 요청에 대한 유연한 대응에 관한 예로, 단순히 대수를 늘리는 것뿐 아니라 예를 들어 네트워크 측면에서 가까운 구성으로 갖추고 싶다거나, 데이터를 대량으로 쌓을 수 있도록 하는 등의 요청에 대한 대응이 있을 수 있습니다.

마지막으로 병목현상 제어입니다. 이것은 로드밸런서나 네트워크 등에서 발생하는 문제로 시스템 규모가 커지면 무시할 수 없는 영역이 됩니다. 클라우드 컴퓨팅 내의 내부서버 간 통신이 어느 정도가 되면 병목이 되는지, 로드밸런서에 큰 부하를 주었을 때 실제 어떤 거동을 하고 어디에서 병목이나 지연이 발생하는지는 Amazon을 시작으로 해서 클라우드 환경을 제공하는 측의 기술에 의존할 수밖에 없게 됩니다.

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

기술 모델로서 수직통합 모델, 수평분산 모델이라는 개념이 있습니다. 수직통합 모델이란 물리적 계층부터 서비스 설계까지 모든 것을 한 회사에서 구축하는 모델입니다. 예를 들면 Google이나 Amazon과 같은 기업이 해당합니다.

반면, 수평분산 모델은 각 계층마다 다른 기업이 시스템을 제공하는 것으로, 각각이 모여 전체 시스템이 구축되는 모델입니다. 이는 Microsoft와 같은 OS와 오피스군과 같은 일부 애플리케이션에 특화된 기업이 해당됩니다.

Wrap Up

웹 서비스 인프라는 엔터프라이즈와 달리 급격한 성장, 상대적으로 유연한 신뢰성 요구, 그리고 빠른 사양 변경을 전제로 설계해야 합니다. 또한 클라우드와 자체구축 인프라는 각각 확장성과 제어 가능성에서 장단점이 뚜렷하므로, 서비스 특성에 따라 어느 수준의 유연성과 병목 제어가 필요한지를 보고 선택해야 합니다.

Summary

엔터프라이즈와 웹 서비스는 트래픽 규모, 성장속도, 신뢰성 요구, 트랜잭션 정합성 측면에서 성격이 크게 다릅니다. 웹 서비스에서는 저비용 고효율, 확장성, 응답성, 그리고 사양 변경에 유연하게 대응할 수 있는 인프라가 중요합니다. 이런 맥락에서 클라우드 컴퓨팅은 저가와 확장성이라는 장점을 가지지만, 서비스별 독자 사양과 제어 한계라는 제약도 함께 가집니다. 반대로 자체구축 인프라는 하드웨어 구성, 서비스 요구 대응, 병목현상 제어에서 더 높은 자유도를 제공하지만 직접 관리해야 하는 부담이 큽니다. 결국 대규모 데이터 처리를 지탱하는 서버 인프라는 비용, 확장성, 유연성, 제어 가능성 사이의 균형 위에서 설계되어야 합니다.

Reference