[입 개발] 인터넷 스타트업을 위한 소프트웨어 스택 – 하드웨어 이중화

해당 블로그는 KT UCloud의 지원을 받고 있습니다.

 

일반적으로 개발자들이 잘 아는 분야는 소프트웨어 개발입니다. 엄청나게 세분화되어 있는 세상에서, 네트웍 장비나, 서버의 특성등에 대해서 자세히 알기는 어렵습니다. 그래서 조그만 규모가 있는 회사들은 하드웨어 쪽을 관리하는 관리자들이 다 따로 있습니다. 어떤 분은 L4 스위치의 전문가이고, 어떤 분은 NAS 스토리지에 대해서 자세히 아시는 거죠. 그런데 이제 막 창업한 스타트업이나, 이미 어느 정도 시간이 지난 기업이라도, 이런 분야에 대해서 잘 아시는 분들을 다 고용하기는 어렵습니다.

 

그런데 사실 서비스를 운영하다보면, 실제 소프트웨어 장애도 많지만, 그것보다 하드웨어 장애를 더 많이 만나게 됩니다. 서버를 1000대 이상 운영하는 서비스를 보면, 하루에 최소 1~2대 이상 서버가 죽어나갑니다. 그런데 재미있는 것은 대부분의 어느정도 경험이 있는 개발자들은, 이렇게 서버가 장애나는 경우에 대해서 대비한 서비스 아키텍처를 설계하고 만들기 시작합니다. 그래서 서버 한 두대가 죽는 것 가지고는 실제로 서비스에 큰 문제가 일어나지 않도록 구성하는 것이지요.

 

일반적으로, 여기까지가 우리 개발자들의 생각의 범위입니다. 서버가 죽는 것은 개발자가 생각하는 스케일러블한 아키텍처 상의 고려 사항에 들어가는 거죠.(워낙 자주 경험하니까요.) 그런데 대부분 전체 서버가 한꺼번에 장애 나는 것에 대해서는 고려하지 않습니다. 어차피 그런일은 거의 발생하지도 않고, 비용대비 효과가 미비할 가능성이 큽니다. 특히 이제 서비스를 시작하는 스타트업이라면 비용대비 효과에 대한 고민이 더더욱 필요합니다.

 

그런데, 아주 쉽게, 이렇게 전체 서버가 죽는 경우를 경험하는 케이스가 생길 수 있습니다. 그게 바로 개발자들은 잘 신경쓰지 않는 네트웍 장비쪽의 장애입니다. 즉 라우터나, 메인 스위치가 고장이 나면, 거기에 연결된 모든 서버가 장애가 나게 됩니다. 그런데 서버쪽 경험이 없는 분들은 서버 코드는 짜더라도 이런 부분에 대해서는 쉽게 알지 못하시는 경우가 많습니다. 저도 그랬습니다. 쿨럭…

 

다시 처음으로 돌아가서 일반적으로 우리가 구성하는 초기 서비스는 다음과 같은 물리적 구성을 가질 것입니다.

 

일반적으로 개발자가 고민하는 범위는 서버의 장애 입니다. 보통 Switch 나 Route 따위는 신경쓰지 않습니다. 쿨럭, 그리고 서버 한대가 죽더라도 다른 서버가 FailOver 할 수 있도록 하는 것이 일반적입니다. 이제 막 시작하는 업체라면 이런 구성도 안할수도 있을 듯 하네요.

 

그런데 만약 Route나 Switch가 장애가 나면 어떻게 될까요? 서버는 잘 돌아가는데, 전혀 다른 서버들과 연결이 안되는 이슈가 벌어지거나, 서버에는 전혀 리퀘스트가 안오는데, 접속이 안된다는 글들만 트위터나 페북에 바글바글 할껍니다.(이 정도면 이미 성공한 건가요?)

 

그러면 어떻게 물리적으로 구성해야 안전할까요? 서버랑 마찬가지 입니다. Route 랑 Switch를 두 개 이상으로 늘리고, 교차 연결이 되도록 설정해 두면 됩니다. 물론 서버에도 랜 카드 하나씩 더 설치해서 처리해주면 됩니다.(랜카드를 추가하면, 랜카드 장애시에도 유용합니다.) 즉 다음과 같은 구성이 됩니다.

이런 구조로 구성을 해두면, Route나 Switch 에서 장애가 나더라도 서비스는 문제가 없습니다.

 

 

서버 호스팅을 이용해서 서비스를 하게 되면, 어찌되었든 하드웨어 장애와 부딪치게 되어있습니다. 클라우드, 클라우드를 외치는 이유중에 이런 부분에서 살짝 벗어날 수 있다라는 장점도 있긴 합니다. 하지만 일단 클라우드 보다 비용을 보면(인건비 제외 -_-) 서버 호스팅이 더 싸기 때문에 이렇게 시작하시는 분들도 많을 것이라고 생각합니다. 이런 부분에 대해서 알고 지나가시면 좋을듯 합니다.

 

* 혹시나 스타트업을 운영하시는 분들중에 자신의 소프트웨어 스택을 공개하고 싶은신 분은 저에게 연락 주시면 감사하겠습니다. charsyam@naver.com 이나 @charsyam 으로 멘션 주시면 됩니다. 감사합니다.

 

 

[입 개발] 인터넷 스타트업을 위한 소프트웨어 스택 – 프롤로그

해당 블로그는 KT UCloud의 지원을 받고 있습니다.

 

제가 개인적으로 하고 싶은 프로젝트가 몇 가지 있는데, 그 중에 하나가, 이것입니다. 스타트업에서 사용할 만한 소프트웨어 스택을 정리하고, 현재 인터넷 스타트업에서 사용하는 기술 스택들을 분석해서 장단점을 분석하고, 사용하기 쉽게 template 형태나, 정보를 제공하는 것이 목표입니다.(혹시나 투자하실 분은 ㅋㅋㅋ 저에게 연락을 ㅋㅋㅋ)

 

한참동안 머릿속으로 구성만 하고 있다가, 조금씩 정리해볼 생각입니다. 다만 약점은 제가 스타트업을 다닌 경험이 없어서, 상상에 의존하거나, 주변 분들의 도움을 얻어야 할 것 같습니다. 혹시나, 스타트업을 운영하시는 분들 중에, 소프트웨어 스택을 공개하실 분들은 저에게 연락을 주시면 감사하겠습니다. charsyam@naver.com 입니다. 공개가 꺼려지시면 이런 이런 것들을 쓴다 정도로만 알려주셔도 됩니다.    제 능력으로 보답을 해드릴 수 있는 것은 거의 없지만, 혹시나, 기술적인 부분에 대해서 필요하신 부분이 있으면, 제가 아는 한도내에서는 자세히 설명을 쿨럭…( <– 이런걸로 때우겠다는 놀부 심보를 ㅋㅋㅋ)

 

아 혹시나, 제가 못미더울 분들을 위해서(저도 절 못믿습니다. ^^) 최초에는 디지털 포렌식 업체에서 5년 5개월 정도 디지털 포렌식 소프트웨어를 개발했습니다. 윈도우 프로그래밍, 파일 시스템, 파일 포맷 분석이나 내부 검색 시스템 정도를 개발해봤습니다. 그리고 그 뒤에는 NHN에서 2년 정도는 윈도우/윈도우 모바일/아이폰 등의 어플리케이션 개발을 했고, 그 뒤에 2년 정도는 네이버 메일 백엔드 쪽 개발을 했습니다.   그럼 경력이 대략 9년 반 정도 되는건가요? 물론, 경력에 맞는 실력을 갖췄냐고 물어보시면 그냥 거의 -_- 초보라고 보시는게 쿨럭… 그럼 제 소개는 간단히 마치고, 주로 해당 내용에 들어갈 것들은…

 

1. 기본적인 소프트웨어 스택 소개 및 구축 방법

  • HAProxy, Nginx, Vanish, Redis, Memcached 등의 개별 솔루션 소개 및 간략한 내부 구조
  • 차후에는 Hadoop, HBase, Cassandra, MongoDB 등의 NoSQL 류와 Mysql, PostgreSQL 등의 DB류 소개

2. 현존하는 인터넷 스타트업들이 고려하거나 구축한 소프트웨어 스택 소개(사실 이걸 해보고 싶은데, 이건 누가 연락을 주셔야 쿨럭…)

 

뭐, 이걸 할 수 있으면 꽤 재미있을 듯 한데, 혹시나 공개하고 싶으신 분들은 저에게 메일이나 연락주시면 감사하겠습니다. 제가 필리핀에 있어서, 인터넷이 잘 안되는 환경이라 혹시나 메일 주셨는데 답변이 늦어도 아, 또 비와서 인터넷 끊겨서 연락을 못하는구나 라고 생각하시면 감사하겠습니다. @charsyam 으로 멘션주셔도 됩니다. 감사합니다.