기술·운영 저널
소규모 팀이 제품·인프라·자동화를 실제로 굴리며 겪은 것들. 잘된 것보다 깨진 것과 그 이유를 주로 적습니다.
수기 Axios 호출을 없앤 방법: Spring Boot API에서 SDK 자동 생성하기
서버와 앱이 URL·메서드·타입을 따로 관리하면 API 변경은 런타임 오류가 된다. Springdoc OpenAPI와 OpenAPI Generator로 Java·TypeScript SDK를 만들고, 수기 Axios 호출을 걷어낸 과정을 적는다.
화면을 새로 만들다 잃어버린 것들
React Native 화면을 디자인 정본에 맞춰 다시 만들면서, UI보다 먼저 사라질 수 있는 것은 상태 처리와 업무 규칙이라는 걸 알게 됐다. 화면을 바꾸기 전에 무엇을 적어 두고, 어떤 테스트를 남겨야 하는지 실제 재생성 과정으로 정리했다.
같은 시간 버그가 세 번 났다, 그래서 규칙을 코드로 옮겼다
서버가 준 UTC 시각을 화면에 그대로 찍어 9시간이 어긋났다. 자정 근처에서는 날짜가 하루 틀렸다. 날짜용으로 만든 문자열 자르기 함수에 시각이 들어오면서 생긴 일이다. 리뷰와 문서로 두 번 막으려다 실패하고, 세 번째에 검사 스크립트를 붙였다.
서버 한 대에서 쿠버네티스를 어떻게 배치했나
서버 한 대를 넷으로 나누자 볼륨, 진입점, 부팅 순서, 배포 단위 문제가 생겼다. 저장 방식은 결국 세 번 옮겼다. 노드·네트워크·저장소·배포 단위를 어떻게 구성했고 어디서 막혔는지 적는다.
혼자 지킬 사람이 없어 쿠버네티스를 골랐다
1인 회사라 웹서버 뒤에 톰캣을 두는 흔한 구성으로는 죽었는지와 부하를 사람이 지켜봐야 한다. 하지만 지켜볼 사람이 없어 쿠버네티스를 골랐다. 서버를 통째로 갈아엎을 때 걷어낼 기회가 있었지만 유지했다. 자가 치유는 쓰고 있고 자동 확장은 아직 한 번도 쓰지 않았다.
서버가 한 대인데도 Proxmox를 올린 이유
지원이 끝난 OS에서 쿠버네티스를 돌리고 있었다. 서버 한 대에 Proxmox를 올리고 가상 머신 4대로 나눴다. 이중화는 할 수 없지만, 잘못돼도 되돌릴 수 있게 됐다. 그 과정에서 막힌 다섯 가지를 정리했다.