서버가 또 터졌다 — ConoHa에서 AWS로, 3시간의 이사
지난 글에서 ConoHa VPS 장애 이야기를 했어요. site-ping 덕분에 빠르게 감지하고 대응할 수 있었다는 이야기.
그런데 끝이 아니었어요. 또 터졌거든요.
또 터졌다
새벽에 장애가 발생했어요. 아침에 일어나서 확인해보니 서비스들이 또 죽어 있더라고요. 이번에도 ConoHa 인프라 문제였어요.
한두 번이면 “운이 나빴나 보다” 하고 넘어갈 수 있어요. 그런데 반복되니까 생각이 달라지더라고요. 이건 운이 아니라 구조적인 문제고, 여기에 계속 있으면 안 되겠다는 확신이 들었어요.
이번엔 진짜 옮기자.
왜 AWS였나
클라우드 벤더는 여러 곳이 있어요. GCP도 있고, Azure도 있고. 그런데 긴급 상황에서 중요한 건 “어디가 더 좋은가”가 아니라 “어디가 가장 익숙한가”였어요.
AWS는 이전 직장에서부터 써왔기에 가장 손에 익어 있었어요. 콘솔 구조도 알고, 어떤 서비스를 조합해야 하는지도 대충 감이 있고. 빠르게 복구해야 하는 상황에서 새로운 걸 배워가면서 할 여유는 없었거든요.
그리고 목표도 명확했어요. AWS-native하게 최적화하는 게 아니라, 지금 돌아가는 걸 빠르게 옮기는 것. 완벽한 아키텍처는 나중에 생각하기로 했어요.
견적부터
옮기겠다고 결심은 했는데, 돈은 한정되어 있잖아요. 무작정 시작할 수는 없었어요.
Claude한테 현재 구성을 설명하고, AWS로 옮기면 어떤 구성이 필요하고 얼마나 나올지 견적을 뽑아달라고 했어요. EC2 인스턴스 타입, RDS 스펙, 예상 월 비용까지. 사람이 하나하나 AWS 요금 페이지 뒤져가며 계산하면 그것만으로도 한참 걸리는 작업인데, 방향만 잡아주니까 바로 나오더라고요.
예산 안에 들어오는 걸 확인하고 나서야 마음 편하게 다음 단계로 넘어갈 수 있었어요.
설계
견적이 나왔으니 이제 전체 구성을 설계할 차례였어요.
EC2, RDS 인스턴스 타입과 대수, 로드밸런서, 도메인 설정, 네트워크 구성까지. 하나의 인프라를 통째로 설계하는 작업이었어요.
여기서도 내가 한 건 방향을 잡아주는 거였어요. “서비스가 몇 개고, 지금은 이렇게 돌아가고 있고, 이런 식으로 구성하고 싶다.” 큰 그림을 알려주면 Claude가 구체적인 구성을 제안하고, 나는 거기서 디테일을 조정하는 식이었어요.
“이 인스턴스는 좀 과한 것 같은데?”, “로드밸런서 여기에 꼭 필요해?” 같은 판단은 내가 내렸어요. 전체 그림을 이해하고 있어야 할 수 있는 질문들이었어요.
Terraform으로 한방에
설계가 끝나면 보통은 AWS 콘솔에 들어가서 하나하나 클릭하면서 만들잖아요. 그런데 이번엔 Terraform으로 갔어요.
설계된 구성을 Terraform 스크립트로 작성하면, 명령어 한 번으로 전체 인프라가 올라가거든요. Claude한테 설계 내용을 주고 Terraform 코드를 작성해달라고 했어요. VPC, 서브넷, 보안 그룹, EC2, RDS, 로드밸런서, 도메인까지 전부.
이걸 내가 직접 다 짰으면 하루는 걸렸을 거예요. Terraform 문법도 찾아봐야 하고, AWS 리소스 간의 의존성도 맞춰야 하고. Claude가 초안을 만들어주면 나는 리뷰하고 수정하는 방식으로 진행하니까 속도가 완전히 달랐어요.
terraform apply 한 번에 인프라가 올라가는 걸 보면서, “이게 되네?” 싶었어요.
3시간, 끝
견적 → 설계 → Terraform 작성 → 배포 → 서비스 이전. 전체 과정이 3시간이었어요.
혼자 했으면 며칠은 걸렸을 거예요. AWS 요금 계산하는 데 반나절, Terraform 코드 짜는 데 하루, 트러블슈팅하는 데 또 반나절. 그런데 Claude한테 방향만 잡아주니까 실행 속도가 완전히 달라지더라고요.
이번 경험을 하면서 비유 하나가 떠올랐어요.
가비지콜렉터가 등장하고 나서 메모리를 하나하나 관리하지 않아도 되는 시대가 됐잖아요. AI도 비슷한 것 같아요. 기술의 디테일을 하나하나 다 알지 못해도, 기술로 현실 세계의 문제를 해결할 수 있는 시대가 된 거예요.
하지만 가비지콜렉터가 있어도 메모리를 이해하는 엔지니어가 더 좋은 코드를 쓰잖아요. AI도 마찬가지인 것 같아요. 디테일을 알아야 AI의 작업물을 내가 원하는 방향으로 유도할 수 있거든요. 하나하나 깊게 파고들진 못하더라도, 적어도 AI가 어떤 계획을 세웠고 어떤 작업을 했는지 정도는 읽을 수 있어야 해요.
그래야 “이건 아닌데?” 하고 방향을 틀 수 있으니까요.