혼자 만들 때 기술을 고르는 기준
혼자 만들 때 가장 중요한 기준은 성능도 유행도 아닙니다. 6개월 뒤의 내가 고칠 수 있는가입니다.
세 가지만 봅니다
- 내가 이미 아는가 — 배우면서 만들면 두 배로 걸립니다
- 자료가 많은가 — 막혔을 때 검색으로 풀리는지
- 혼자 배포할 수 있는가 — 인프라가 복잡하면 유지가 안 됩니다
복잡도를 늘리는 선택들
| 선택 | 혼자 할 때의 비용 |
|---|---|
| 마이크로서비스 | 배포·디버깅이 몇 배로. 초기에는 거의 항상 손해 |
| 여러 언어 혼용 | 컨텍스트 전환 비용 |
| 직접 구축한 인증 | 보안 사고 위험. 검증된 것을 쓰는 편이 안전 |
| 과도한 추상화 | 나중에 본인도 못 읽음 |
단순하게 시작해도 됩니다
초기 사용자 수에서는 서버 한 대와 데이터베이스 하나로 충분한 경우가 대부분입니다. 확장은 필요해진 뒤에 해도 늦지 않습니다.
미리 대비한 확장 구조가 실제로는 한 번도 안 쓰이는 경우가 훨씬 많습니다.
다만 이건 처음부터
- HTTPS — 나중에 붙이면 링크가 다 깨집니다
- 백업 — 사고는 항상 백업 없을 때 납니다
- 로그 — 없으면 원인을 못 찾습니다
- 에러 알림 — 사용자가 알려주기 전에 알아야 합니다
6개월 뒤의 내가 고칠 수 있는가
혼자 만드는 서비스는 매일 손대지 않습니다. 몇 달 방치했다가 급하게 고쳐야 하는 상황이 반드시 옵니다.
그때 코드를 열었는데 무슨 일을 하는지 모르겠다면 기술 선택이 틀린 것입니다. 성능이 아무리 좋아도 소용없습니다.
- 익숙한 언어 하나로 끝까지 가기
- 구조를 단순하게 — 파일을 열면 흐름이 보이게
- 추상화는 세 번 반복된 뒤에
- 주석은 왜를 남기기 (무엇은 코드가 말합니다)
선택이 만드는 장기 비용
| 선택 | 당장 | 6개월 뒤 |
|---|---|---|
| 익숙한 스택 | 빠름 | 유지 쉬움 |
| 새로 배우는 스택 | 2배 느림 | 다시 익혀야 함 |
| 마이크로서비스 | 구조가 깔끔해 보임 | 배포·디버깅이 지옥 |
| 과한 추상화 | 재사용 가능해 보임 | 본인도 못 읽음 |
| 관리형 서비스 | 비용 발생 | 운영 부담 없음 |
관리형 서비스는 돈으로 시간을 사는 선택입니다. 혼자라면 대개 이쪽이 맞습니다. 데이터베이스를 직접 운영하는 데 드는 시간이 요금보다 비쌉니다.
처음부터 넣어야 하는 다섯 가지
- HTTPS — 나중에 붙이면 링크·쿠키·리다이렉트가 다 꼬입니다
- 환경변수 분리 — 키를 코드에 넣으면 반드시 사고가 납니다
- 로그 — 없으면 원인을 못 찾습니다
- 백업 — 사고는 백업 없을 때 납니다
- 에러 알림 — 사용자가 알려주기 전에 알아야 합니다
다섯 가지 모두 하루면 됩니다. 그런데 나중에 붙이려면 며칠이 걸리고, 그 사이에 사고가 납니다.
데이터베이스는 특히 신중하게
코드는 다시 쓸 수 있지만 데이터는 못 되돌립니다. 그래서 데이터베이스 선택과 스키마 설계는 다른 것보다 신중해야 합니다.
- 관계형으로 시작하는 편이 대체로 안전합니다
- 삭제는 실제 삭제인지 미리 정하기
- 시간 정보는 UTC로 저장하고 표시할 때 변환
- 금액은 정수(원 단위)로 — 소수점 오차를 피합니다
- 마이그레이션 도구를 처음부터 쓰기
금액을 부동소수점으로 저장했다가 1원 차이로 정산이 안 맞는 사고가 흔합니다. 처음부터 정수로 다루세요.
무엇을 직접 만들지 말아야 하나
| 기능 | 권장 | 이유 |
|---|---|---|
| 인증·로그인 | 검증된 라이브러리/서비스 | 보안 사고 위험 |
| 결제 | PG/MoR | 직접 구현 불가 |
| 메일 발송 | 전문 서비스 | 도달률 문제 |
| 파일 저장 | 오브젝트 스토리지 | 용량·백업 |
| 검색 | 필요해지면 전용 엔진 | 직접 만들면 한계 |
직접 만들면 재미있지만 유지보수가 평생 따라옵니다. 핵심 가치가 아니라면 남의 것을 쓰는 편이 낫습니다.
자주 묻는 질문
새 기술은 언제 도입하나요?
지금 겪는 문제를 푸는 경우에만 도입하는 것이 안전합니다. “좋아 보여서”는 나중에 비용으로 돌아옵니다.
프레임워크 버전은 최신으로 올려야 하나요?
보안 패치는 즉시, 메이저 버전은 안정화된 뒤에 올리는 편이 안전합니다. 다만 너무 오래 미루면 한 번에 올리기가 더 어려워집니다.
타입스크립트를 써야 하나요?
혼자여도 규모가 커지면 도움이 됩니다. 다만 익숙하지 않다면 초기 속도가 느려지므로 상황에 따라 판단하세요.
같이 보면 좋은 글
인프라 담당 없이 배포하는 현실적인 방법서버 한 대로 시작해 안정적으로 운영하는 최소 구성. 처음부터 복잡한 인프라를 구성할 필요가 없습니다. 서버 한 대와 프로세스…혼자 운영할 때 최소한으로 봐야 할 것모니터링을 거창하게 하면 안 봅니다. 정말 필요한 네 가지. 대시보드를 아무리 예쁘게 만들어도 안 보면 소용없습니다. 혼자라면…처음 서비스를 팔기 전 확인할 목록만들고 나서 빠뜨리는 것들. 결제·정책·보안·운영을 한 장으로. 코드는 끝났는데 파는 준비가 안 되어 출시가 밀리는 경우가 많…서버를 열어두면 바로 시작되는 공격들실제 로그에서 관찰되는 스캔 유형과 최소한의 방어. 서버를 인터넷에 열면 몇 분 안에 스캔이 시작됩니다. 유명하지 않아도 상관…AI API 비용이 매출을 넘지 않게 하는 설계쓸수록 적자가 나는 구조를 피하는 방법. 모델 분리와 캐시. AI를 쓰는 서비스는 사용량에 비례해 원가가 늘어납니다. 정액제로…메일과 문자를 보낼 때 지켜야 하는 것기술적으로는 쉽습니다. 문제는 도달률과 법적 요건입니다. 발송 코드는 몇 줄입니다. 그런데 스팸함으로 가거나 법에 걸리면 안 …