이콜레모

아키텍처 리뷰


Youngrok Pak at 5 years, 1 month ago.

이콜레모에서 스타트업을 위한 아키텍처 리뷰를 제공하고 있습니다. 스타트업을 하다보면 다양한 기술 문제를 겪습니다. 만일 다음과 같은 문제를 겪는다면 이콜레모에 아키텍처 리뷰를 의뢰해보세요. youngrok@ecolemo.com로 메일을 보내주시면 됩니다.

  • 처음에는 코드가 단순했는데, 점점 복잡해져가는 요구사항을 수용하다보면 코드가 지저분해져서 생산성이 떨어진다.
  • 새로 채용한 프로그래머들이 기존 코드 적응에 어려움을 겪는다.
  • 사용자가 늘어나면서 응답속도가 떨어진다.
  • 서버가 가끔 다운되거나 서버 응답이 안 온다.
  • 자잘한 버그가 늘어나고 품질이 떨어진다.
  • 서버 배포 작업을 할 때 늘 뭔가 잘못될까봐 불안하다.
  • 프로그래머 수가 늘어나면서 코드 통합에 시간이 많이 든다.
  • 일단 돌아가게 만들기는 했는데 제대로 했는지 잘 모르겠다.
  • 여러 가지 다양한 외부 시스템과의 연동이 필요한데 아키텍처 설계가 어렵다.

이콜레모의 기술 스택에 대한 역량이 어떤지 궁금하신 분은 스타트업을 위한 기술 스택을 참고해보세요. 이콜레모에서 운영하고 있는 엔지니어링 블로그입니다.

아키텍처 리뷰는 이메일 리뷰, 현장 분석, 개선 작업 3단계로 나뉩니다. 3단계 중 원하는 단계만 진행할 수도 있습니다. 먼저 비용이 저렴한 이메일 리뷰로 시작해보시는 것을 추천합니다.

이메일 리뷰 - 비용 15만원#

첫 단계인 이메일 리뷰는 소정의 질문지를 작성해서 보내주시는 것으로 시작됩니다. 질문지의 항목에 답변을 달아서 이메일로 보내주시면 분석한 후 보고서를 보내드립니다. 보고서에는 현재 선택한 기술에 대한 평가, 예상되는 문제점, 개선 방안 등을 담게 됩니다. 기술 분석에서는 스타트업의 성장 단계, 인적 구성, 자금 상황, 비즈니스 등 다양한 상황을 고려합니다. 단순히 최고의 기술을 권하는 것이 아니라 상황에 맞는 최적의 기술 선택을 도와드립니다.

질문지의 내용은 다음과 같습니다.


 

현재 비즈니스 현황에 대한 이해#

  1. 귀사의 비즈니스를 한두 문장으로 설명해주세요. 이미 서비스 중이라면 확인할 수 있는 주소도 적어주세요.
  2. 귀사의 스타트업은 어떤 상태에 있나요?
    1. 아이디어 발상 단계
    2. 프로토타입 개발 중
    3. 프로토타입 완성
    4. 베타 서비스 오픈
    5. 정식 서비스 오픈
  3. UV(Unique Visitor)가 증가하고 있나요? (주간, 혹은 일간)
  4. 매출이 발생하고 있나요? 또, 증가하고 있나요?
  5. 손익분기점을 넘겼나요? 이익이 증가하고 있나요?
  6. 현재 인적 구성은 어떻게 되나요? 역할별로 구분해주시고, 지분을 공유하는 코파운더, 정직원, 계약직, 외주 중 어떤 것인지도 구분해서 가능한 한 상세하게 적어주세요. 주관적인 의견도 좋습니다.
  7. 국내 시장 위주인가요, 아니면 글로벌을 목표로 하고 있나요? 혹은 다른 특정 국가를 목표로 하고 있나요?
  8. 자금 여력은 어떤가요? 투자는 받으셨나요?
  9. 현재 비즈니스의 당면 과제는 무엇인가요?

기술 스택#

서버#
  1. 사용하고 있는 모든 서버와 그 역할을 알려주세요.
  2. 서버 호스팅은 어디서 하고 있나요? 서버 OS는 무엇을 사용하나요?
  3. 서버 모니터링은 하고 있나요? 하고 있다면 어떤 모니터링 시스템을 사용하나요?
  4. 서버에 배치(deploy)는 어떻게 하고 있나요? 가능한 한 상세하게 설명해주세요.
  5. 서버 프로그래밍 언어와 프레임워크는 무엇을 사용하나요? 어떤 라이브러리들을 사용하고 있나요?
  6. 비동기 작업이 필요한 일이 있나요? 있다면 어떻게 처리하고 있나요?
  7. 채팅 등의 실시간 응답이 활발한 기능이 있나요? 있다면 어떻게 서비스하고 있나요?
  8. 주기적으로 실행되어야 하는 작업이 있나요? 있다면 어떻게 하고 있나요?
  9. 성능 문제를 겪고 있나요? 겪고 있다면 어떤 문제인지 상세히 설명해주세요.
  10. 서버 장애가 얼마나 발생하나요? 주로 어떤 문제로 인한 장애가 많은가요?
  11. 에러 로그를 모니터링하고 있나요?
  12. 대용량 스토리지가 필요한 기능이 있나요? 있다면 어떻게 소화하고 있나요?
  13. REST API를 사용하나요? 이를 위한 보조 시스템으로 사용하는 것이 있나요?
  14. 보안을 위해 어떤 작업들을 해놓았고, 앞으로 어떤 작업을 할 예정인가요? 이미 인지하고 있지만 아직 해결하지 않은 보안 취약점이 있나요?
  15. Failover 준비는 되어 있나요? 현재 SPOF는 어떤 것이 있나요?
  16. 데이터베이스는 무엇을 사용하고 있나요?그것을 선택한 이유는 무엇인가요?
  17. 데이터베이스는 주기적으로 백업하고 있나요? 리플리케이션이 되어 있나요?
  18. 내부 프로그래머들의 시스템에 대한 평가는 어떤가요? 개인별로 주관적인 의견을 수집해주시면 좋습니다.
#

사용자가 웹으로 서비스를 이용할 수 있는 경우, 혹은 웹으로 된 관리자 시스템이 있는 경우에만 답변해주세요.

  1. 웹 UI 기술로 사용 중인 것들을 적어주세요. (예: Bootstrap, jQuery, React.js, Babel 등) 사용 중인 기술에 대한 내부 프로그래머들의 평가도 같이 적어주시면 좋습니다.
  2. JavaScript를 깊이 이해하고 있는 프로그래머가 있나요?
  3. CSS를 깊이 이해하고 활용하고 있나요? CSS 3.0 스펙까지 활용하고 있나요?
  4. 반응형 디자인을 사용하나요?
  5. 디자이너가 따로 있나요? 있다면 디자이너와의 협업은 어떻게 하나요?
  6. 웹 클라이언트와 서버 간의 협업은 어떻게 하나요?
안드로이드 앱#

안드로이드 앱이 이미 있거나, 만들 예정이 있는 경우에 답변해주세요.

  1. 안드로이드 개발 도구는 무엇을 사용하나요?
  2. 빌드 도구는 어떤 것을 사용하나요?
  3. 서버와의 통신은 어떤 라이브러리를 사용하나요?
  4. 안드로이드 layout xml에 대해 충분히 이해하고 있는 프로그래머가 있나요?
  5. 그 외에 3rd party 라이브러리로 어떤 것들을 사용하고 있나요?
  6. Material Design에 대해 충분한 이해가 있으며, 적용하고 있나요?
iOS 앱#

iOS 앱이 이미 있거나, 만들 예정이 있는 경우에 답변해주세요.

  1. Swift를 사용하고 있나요? iOS SDK 버전은 무엇을 사용하며, 하위 호환성은 어느 버전까지 지원하나요?
  2. 3rd party 패키지 관리는 어떻게 하고 있나요? 어떤 패키지들을 쓰고 있나요?
  3. iOS의 다양한 레이아웃 시스템을 정확하게 이해하고 있나요? 스토리보드는 사용하나요?
  4. 최신 iOS의 기능을 적극적으로 활용하는 기능이 있나요? 그 외에 iOS의 어떤 기능들을 사용하고 있나요?

협업, 그 외 여러 가지#

  1. 위에서 분류되지 않은 기술 중에 어떤 것들을 사용하고 있나요? 사용하면서 문제를 겪고 있는 게 있나요?
  2. 버전 관리 시스템은 무엇을 사용하나요? 브랜치 정책이 따로 있나요? 
  3. 프로젝트 관리 도구로 어떤 것을 사용하고 있나요? 팀원간 커뮤니케이션은 어떻게 하나요?
  4. 린 스타트업에 대해 알고 있나요? 안다면 적용하고 있나요?
  5. 사용자 데이터 분석을 하고 있나요? 하고 있다면 어떤 도구를 사용하고 있나요?
  6. 품질 관리는 어떻게 하고 있나요?
  7. 그 외에 추가하고 싶은 정보를 적어주세요.

여기까지가 질문지입니다. 답변이 상세할수록 더 좋은 분석 보고서를 만들 수 있습니다. 이 질문지에 대한 답을 youngrok@ecolemo.com으로 보내주시면 2일 내에 보고서를 답장으로 보내드립니다.

현장 분석 - 비용 40~240만원#

이메일 리뷰 결과가 설득력이 있고, 더 깊이 있는 분석이 필요하다고 생각될 경우 현장 분석을 이어서 진행할 수 있습니다. 이콜레모의 엔지니어가 방문해서 클라이언트의 실무자와 협업해서 깊이 있는 분석에 들어갑니다. 이 때는 소스 코드도 검토하고 서버 상태도 확인하면서 심도 있는 분석을 하게 됩니다. 대체로 분석기간은 짧게는 반나절에서 길게는 3일 정도 걸리고, 이 정도면 대부분의 기술적인 이슈를 파악할 수 있습니다. 만일 1단계를 먼저 진행했다면 현장 분석은 정말 중요한 문제에만 집중해서 짧게 끝내기도 합니다.

현장 분석을 해보면 여러 가지 개선안들이 나오는데, 간단하게 수정할 수 있는 문제는 즉석에서 실무자와 함께 수정하기도 합니다. 복잡한 문제는 따로 개선안을 설계해서 제안서를 드리고 같이 토론하는 시간을 갖게 됩니다. 

개선 작업 - 비용은 작업하는 엔지니어의 일당 x 일한 일수#

2단계의 분석 결과에 따라 개선안이 나오면 그 다음 단계는 개선 작업의 실행입니다. 대개는 클라이언트가 직접 수행할 수 있는 방안으로 개선안을 만들지만, 여러 가지 여건상 이콜레모가 같이 개선 작업을 진행하기도 합니다. 이 때는 개선 작업에 적합한 엔지니어를 배정하게 되는데, 그 엔지니어가 실제 일한 일수에 비례해서 비용을 받습니다.

개선 작업에서는 장애를 같이 해결하기도 하고, 신기술 도입이 필요한 경우 여러 후보를 테스트해서 최적의 기술을 찾기도 합니다. 기존 직원들의 재교육이 필요한 경우는 따로 커리큘럼을 짜서 교육을 진행하기도 하고, 개선안의 적응에 필요한 가이드를 만들기도 합니다. 데이터베이스 안정화 작업을 수행하는 경우도 많은데, 주로 리플리케이션을 통해 Failover를 구축하고 백업, 리스토어 시스템을 갖추는 작업을 많이 합니다.

시스템 안정화 개선 작업은 이콜레모에 전적으로 맡기는 경우도 많으나, 이런 작업이 블랙박스가 되지 않도록 저희가 진행한 작업에 대해서는 상세한 기록을 남기고 충분히 정보를 공유하려고 노력합니다. 개선 작업이 완료되면 before & after를 비교한 보고서를 작성해드립니다.

아키텍처 리뷰 신청#

아키텍처 리뷰를 의뢰하시려면 youngrok@ecolemo.com로 메일을 보내주시면 됩니다. 궁금한 점을 먼저 물어보셔도 되고, 바로 질문지에 대한 답변을 작성해서 보내주셔도 됩니다. 


Comments




Wiki at WikiNamu