서비스 출시 전 서버 점검 항목

서비스를 출시하기 전에 점검하는 항목들은 주로 "개발 및 운영 편의성과 시스템 안정성"에 관한 항목들입니다. 사이드 프로젝트에서 모든 부분을 완벽하게 개발하기는 어렵지만, 훌륭한 엔지니어라면 시스템의 확장성과 유지보수성에 무게를 두고 서비스를 런칭해야 합니다.
서비스가 흥행하게되면, 꽤 오랜기간동안 유지보수하는 큰 규모의 프로젝트로 발전할 가능성이 큽니다. 일정 복잡도에 도달하게 되면 프로젝트가 점차 사람의 손만으로는 개발하기 어려워지기 때문에 이런 상황에서 사용할 수 있는 도구들과 키워드에 대해서 소개합니다. 아래 물음에 대해서 스스로 답해보거나 어느 시점에 도입할지 팀원들과 논의해보는 시간이었으면 좋겠습니다.

1. CI : 지속적 통합

Lint 소스코드의 스타일, 잠재적 버그에 플래그를 달아놓는 도구, 프로젝트의 소스코드에 linter가 적용되었나요?
Format 소스코드의 스타일을 일괄적으로 변경하는 도구, 팀이 일관된 소스코드이 스타일을 지키고 있나요?
Static program analysis 프로그램을 실행시키지 않고, 소스코드를 분석하여 잠재적 버그/보안 취약점을 찾아냄, 정적 분석이 사용되고 있나요?
Test 유닛 테스트를 하고 있나요? 테스트 프레임워크가 사용되고 있나요? (상세설명은 생략합니다)
Keyword : Linter, Formatter, Static program analysis, Software Testing, Unit Testing, Observability, Service Monitoring

2. CD : 지속적 배포

사람의 손으로 매뉴얼하게 배포되지 않도록 자동화되어있나요?
롤백이 가능한가요?
브랜치 전략이 있나요? * 점검도구 : Introduction to GitLab Flow | GitLab
커밋 컨벤션이 있나요? * 점검도구 : Conventional Commits
Keyword : automation, ansible, terraform, branch strategy, blue green deployment, canary deployment, AB Testing, convention

3. 부하 테스트

아마 프로덕션 레벨에서 사용하는 대표적인 부하 테스팅 도구는 Apache JMeter 일 것입니다. UI를 제공해주지만, 조금 디테일하게 설정할 것들도 많아 복잡할 수 있습니다. 간단히 Cli로 사용하기는 artillery를 추천합니다.
서버 성능을 스케일업하면 QPS를 더 받을 수 있는 구조인가요?
스케일 아웃이 가능한 구조인가요?
PS: 여러분은 혹시 Postman으로도 간단히 부하 테스트가 간단히 된다는 사실을... 알고 계신가요? Performance testing with Postman. The article contains the Postman test… | by Anna Dolnyk | Medium
Keyword : CDN, Cache, Load Balancer, DNS, RAID, Shard, Replica, Stateful, Stateless

4. 운영

서비스 최소 운영 비용은? ex) API Server, DB, Cache, 도메인 1년 총 120,000원
데이터 베이스의 storage full 까지 남은 기간은? ex) 10gb RDB, 1년 운영 가능
다국적 언어 지원이 가능한가요? ex) 서비스 매뉴얼이나 설명이 여러 언어로 지원
Keyword : Cloud Pricing Calculator, i18n, Observability