- 05 Jan, 2026
기획자의 요청이 기획서가 아닐 때: 개발자가 기획자가 된다
기획자의 요청이 기획서가 아닐 때: 개발자가 기획자가 된다 오늘도 슬랙이 울렸다 오전 10시 37분. 슬랙 알림. "OOO님, 로그인 화면에 소셜 로그인 추가해주세요~ 급해요!" 기획서? 없다. 화면 설계? 없다. 어떤 소셜? 모른다. 이게 3년차 개발자의 일상이다.기획이 아니라 '아이디어'를 받는다 처음엔 물었다. "자세한 기획서 있나요?" 돌아오는 답: "아 그냥 카카오톡처럼요!" 카카오톡처럼. 네이버처럼. 쿠팡처럼. 그게 얼마나 복잡한지 아는가. 모른다. 그래서 나한테 물어본다. 결국 내가 묻는다:어떤 소셜 로그인? (구글, 카카오, 네이버, 애플?) 기존 계정이랑 연동은? (이메일 중복이면?) 프로필 정보는 어디까지? (이름만? 프사도?) 약관 동의는? (필수, 선택 구분은?) 에러 처리는? (소셜 연동 실패하면?)이게 개발자 질문인가, 기획자 질문인가.대답을 듣고 나서도 기획은 없다 대답은 온다. 하지만 여전히 애매하다. "일단 카카오, 구글만! 나머지는 나중에요." 나중에. 이 단어가 제일 무섭다. "연동은... 음, 이메일 같으면 하나로 합쳐주세요!" 합쳐주세요. 어떻게? 자동으로? 확인하고? 덮어쓰기? 병합? 결국 내가 정한다. 기획서를 내가 쓴다. 노션 켜서:사용자 플로우 그린다 예외 케이스 정리한다 UI 와이어프레임 그린다 (Figma까지 켠다) API 스펙 설계한다 DB 스키마 수정안 작성한다이거 다 하고 나면 2시간. 개발은 아직 한 줄도 안 했다. 결국 내가 PM이 된다 기획자에게 보낸다. "이렇게 하면 될까요?" 답: "오 좋아요! 그렇게 해주세요~" ...내가 물어본 건데 내가 답을 정했다. 이게 반복되면 학습한다. 아예 안 물어본다. 요청 오면:내가 바로 기획 완성 30분 안에 간단히 검증 바로 개발 시작더 빠르다. 커뮤니케이션 비용이 사라진다. 그런데 문제가 생긴다.책임은 개발자가 진다 기능 출시 후 2일. "아 이거 왜 이렇게 했어요? 이메일 덮어쓰기는 좀..." 내가 정했는데 내가 혼난다. "기획서에 없었잖아요." 이 말이 안 먹힌다. 왜냐면 애초에 기획서가 없었으니까. "그럼 물어보지 그랬어요." 물어봤다. 답이 애매했다. 그래서 내가 정했다. 이 과정을 설명하면 "아 그래도..." 로 끝난다. 결국: 기획자가 한 건 아이디어. 나머지는 다 내가 했다. 그런데 책임은 50:50이 아니다. 코드 짠 사람이 진다. 개발 시간은 누가 보상하나 기획하는 데 2시간. 개발하는 데 3시간. 총 5시간짜리 작업. 그런데 산정은? "개발 3시간이면 되죠?" 기획 시간은 안 쳐준다. 왜? 원래 기획자 일이니까. 그럼 나는 뭐지. 개발자인데 기획도 하는 사람. 풀스택의 의미가 확장된다:프론트 + 백엔드 (여기까진 예상함) DevOps (그래 이것도 인정) 디자인 (Figma 쓸 줄 알게 됨) 기획 (이건 예상 못 함) QA (테스트도 나) CS (장애 대응도 나)이게 연봉 4800에 스톡옵션 0.5%로 해결되는가. 그래서 기획 실력이 늘었다 아이러니하게도 기획을 잘하게 됐다. 사용자 플로우가 보인다. 예외 케이스가 보인다. "이렇게 하면 나중에 이런 문제 생긴다"가 보인다. 실제로 기획자보다 더 디테일하게 기획한다. 왜냐면:직접 구현할 사람이니까 장애 터지면 내가 고칠 거니까 나중에 수정하면 내가 할 거니까이게 장점인가 단점인가. 이력서에 쓸 수 있다: "기획부터 배포까지 전 과정 경험" 실제 의미: "혼자 다 했다" 경계가 사라진다 어느 순간부터 역할 구분이 없다. 회의에서:"이 기능 어떻게 하면 좋을까요?" → 나한테 물어봄 "이 화면 배치 괜찮을까요?" → 나한테 물어봄 "이 데이터 어떻게 보여줄까요?" → 나한테 물어봄대표님은 좋아한다. "역시 풀스택!" 기획자는 편해한다. 나한테 물어보면 되니까. 나는? 피곤하다. 개발만 하고 싶은데 기획 회의에 2시간. 기획만 하면 되나? 아니다. 개발도 해야 한다. 결국 둘 다 한다. 시간은 그대로다. 기획자는 정말 필요 없는가 가끔 생각한다. 기획자 없어도 되는 거 아닌가. 어차피 내가 다 하는데. 그런데 아니다. 기획자는 필요하다. 제대로 된 기획자면:시장 조사한다 경쟁사 분석한다 사용자 인터뷰한다 데이터 분석한다 우선순위 정한다 로드맵 그린다나는 이거 못 한다. 시간도 없고 역량도 없다. 문제는 "제대로 된 기획자"가 없다는 것. 12명 스타트업에서 기획자는 '주니어 1명'. 그 사람도 처음이라 헤맨다. 나한테 물어본다. 결국 내가 알려준다. 기획하는 법을. 이게 맞나 싶다. 이직할 때 뭐라고 쓰지 이력서 쓸 때마다 고민이다. "기획부터 개발, 배포, 운영까지 전체 프로세스 담당" 멋있게 들린다. 실제로는 "혼자 다 함". 면접에서 물어본다: "가장 어려웠던 점은?" 솔직하게 말한다: "명확한 기획 없이 개발하는 것" 그럼 또 묻는다: "그럼 어떻게 해결했나요?" "제가 기획했습니다." 이게 플러스인가 마이너스인가. 모르겠다. 어떤 회사는 좋아한다: "주도적이네요!" 어떤 회사는 걱정한다: "프로세스 없는 곳이었나보네요." 둘 다 맞다. 결국 나는 무엇인가 3년차 풀스택 개발자. 이력:React, Node.js, PostgreSQL, AWS Figma, Notion, 기획 문서 작성 프로젝트 매니징, 우선순위 조정 사용자 플로우 설계, 와이어프레임 DB 설계, API 설계 프론트 개발, 백엔드 개발 배포, 모니터링, 장애 대응 CS, 버그 수정이게 한 사람이 할 일인가. 명함에는 "Developer"라고 써있다. 실제로는 "Developer + PM + Designer + DevOps + QA" 연봉은 Developer 하나 값. 이게 스타트업이다. 이게 1인 개발자의 현실이다. 그래도 배우긴 했다 긍정적으로 보면: 기획 능력 생겼다. 이제 Product Sense가 있다. 사용자 관점에서 생각한다. "이거 쓰기 불편한데?" 가 보인다. 기술 선택할 때도 다르다. "이 기술이 좋다"가 아니라 "이 문제에 이 기술이 맞다". 전체를 본다. 부분이 아니라 흐름을. 이게 시니어 개발자로 가는 길인가? 모르겠다. 확실한 건: 이제 기획서 없어도 개발한다. 좋은 건지 나쁜 건지 모르겠다. 언제까지 이럴 건가 채용 공고 올린 지 6개월. "주니어 개발자 구합니다" 지원 없다. 면접 본 사람 2명. 안 뽑았다. 이유: "같이 일할 사람 없어서" 나밖에 없으니까 코드 리뷰 해줄 사람 없다. 가르쳐줄 시간도 없다. 기획도 해야 하고 개발도 해야 하는데. 결국 안 뽑는다. 나 혼자 한다. 이게 계속될수록 떠나기 어려워진다. 내가 없으면 서비스 터진다. 기획도 개발도 다 멈춘다. 책임감이 족쇄가 된다. 대안은 있는가 생각해봤다. 몇 가지 선택지:계속 한다장점: 안정적 (?) 단점: 번아웃이직한다장점: 제대로 된 프로세스 경험 단점: 여기 서비스는?프로세스 바꾼다장점: 근본 해결 단점: 안 바뀜 (시도해봄)현실은 1번. 계속한다. 왜? 떠나기 미안해서. 이게 맞나 싶다. 내 커리어인데. 다음 회사에서는 다짐한다. 다음 회사는:기획서 있는 곳 코드 리뷰 되는 곳 온콜 로테이션 도는 곳 개발자가 2명 이상인 곳최소한의 기준이다. 이게 사치인가. 이력서에 쓴다: "명확한 요구사항 정의와 협업 프로세스가 있는 환경을 선호합니다" 번역하면: "제발 기획서 좀 주세요" 그래도 남는 것 3년 동안: 기획 문서 87개 작성했다. 내가. 와이어프레임 120개 그렸다. Figma로. 사용자 플로우 42개 설계했다. 이게 개발자 포트폴리오에 들어가나? 모르겠다. 그래도 배웠다:문제를 정의하는 법 솔루션을 설계하는 법 우선순위를 정하는 법 커뮤니케이션하는 법 (혼자지만)이게 쓸모있을까. 아마도. 다음 회사에서는 "기획 잘 아는 개발자"가 될 것이다. 좋은 건지 나쁜 건지는 나중에 알겠지.결국 나는 개발자다. 기획도 하는 개발자. 선택이 아니라 생존이었다.
- 28 Dec, 2025
점심시간에 AWS 콘솔: 쉬어야 할 시간도 일이다
점심시간에 AWS 콘솔: 쉬어야 할 시간도 일이다 점심 먹으러 간다는 게 12시 30분. 배달 음식이 도착했다. 손에 든 건 젓가락이 아니라 노트북이다. "점심 먹으면서 좀 볼게요." 다들 그러는 줄 알았다. 근데 내 주변엔 날 말릴 사람이 없다.기획자는 밖에 나가서 먹는다. 디자이너는 카페 간다. 나는? 책상에서 먹는다. 왜냐면 배포가 오후 2시거든. 점심 먹으면서 로그 확인하고, EC2 상태 보고, RDS 커넥션 체크한다. "점심시간이라도 쉬어야지." 쉬고 싶다. 근데 불안하다. AWS 콘솔이 점심 친구 오늘 메뉴는 제육볶음 덮밥이다. 근데 내 눈은 CloudWatch를 보고 있다. CPU 사용률 65%. 좀 높네. Lambda 에러율 0.3%. 괜찮네. S3 비용 이번 달 12만원. 어? 지난달보다 3만원 올랐네.젓가락으로 밥 한 술 뜨고, 마우스 스크롤. 또 한 술 뜨고, EC2 인스턴스 확인. "너 밥 먹으면서도 일해?" 대표님이 지나가면서 물었다. "아, 그냥 확인만요." 그냥이 아니다. 진짜 확인해야 한다. 왜냐면 오후에 기능 배포하거든. 지금 안정적이어야 나중에 문제가 없다. 점심시간이 온콜 시간 작년 여름이었다. 점심 먹으러 밖에 나갔다. 치킨집. 주문하고 기다리는데 슬랙이 울렸다. "서버 응답 없음" 치킨 포장해달라고 하고 뛰어왔다. 결국 치킨은 식탁에서 먹었다. 노트북 옆에서. 그때부터다. 점심시간에도 노트북 챙긴다."밥 먹을 때만이라도 쉬어." 부모님이 그러셨다. 쉬고 싶다. 근데 장애는 내 점심시간을 배려 안 한다. AWS 알람은 내가 밥 먹는지 안 먹는지 모른다. 유저는 점심시간에도 우리 서비스를 쓴다. 그럼 나도 점심시간에 일해야 한다. 그게 풀스택 개발자다. 비용 알람이 식욕을 잡는다 오늘 AWS 콘솔 열었다. 이번 달 예상 비용: 87만원. 저번 달: 72만원. 15만원 올랐다. 밥이 목으로 안 넘어간다. 뭐가 올랐지? EC2? RDS? 아니면 데이터 전송? Cost Explorer 들어간다. 밥은 식는다. 나는 그래프를 본다. "S3 비용이 왜 이렇게..." 로그 파일이다. 삭제 정책 안 만들어놨다. 6개월치 로그가 쌓여있다. 하루에 1만원씩 나간다. "아 진짜." 젓가락 놓는다. 터미널 연다. aws s3 rm s3://logs/2024-01/ --recursive점심시간이 운영 시간이 됐다. 쉬는 시간이 없는 이유 혼자니까. 개발자가 나 하나니까. 내가 안 보면 아무도 안 본다. "점심시간에 서버 터지면 어떡해요?" 대표님이 그렇게 말한 적 없다. 근데 나는 안다. 내가 안 보면 2시간 동안 방치된다는 걸. 그래서 본다. 밥 먹으면서도. 다른 회사는 어떨까. 개발팀이 5명이면, 로테이션 돌릴 수 있다. "오늘 점심시간 온콜은 민수 차례야." 우리는? 매일 내 차례다. 365일 온콜이다. 밥보다 빠른 알람 음식이 오면 30초 안에 뚜껑 연다. 근데 슬랙 알람은 3초 안에 확인한다. 우선순위가 바뀌었다. 배 > 일 이 아니라 일 > 배 가 됐다. "지금 먹어야 하는데..." 근데 손은 노트북을 연다. 502 Bad Gateway. "아 씨." 밥은 나중이다. 지금은 Nginx 로그 봐야 한다. PM2 프로세스가 죽었다. 재시작한다. pm2 restart all5분 지났다. 밥이 식었다. "전자레인지..." 다시 데운다. 다시 먹는다. 다시 콘솔 본다. 점심시간의 루틴 12시 30분. 밥 시킨다. 12시 35분. 배달 오는 동안 CloudWatch 본다. 12시 45분. 밥 도착. 노트북 연다. 12시 50분. 먹으면서 Cost Explorer 확인. 1시 00분. RDS 커넥션 수 체크. 1시 10분. EC2 메모리 사용률 확인. 1시 20분. Lambda 에러 로그 훑어본다. 1시 30분. 밥 다 먹음. 콘솔은 아직 열려있음. 이게 점심시간이다. 쉬는 시간이 아니라 "먹으면서 일하는 시간"이다. 동기는 밖에서 논다 대학 동기랑 통화했다. "야, 점심 뭐 먹어?" "나? 밥 먹으면서 AWS 보는데." "...너 진짜 그렇게 살아?" 그렇게 산다. 동기는 대기업 다닌다. 점심시간 1시간 30분. 밖에 나가서 먹고, 카페 가서 커피 마시고 온다. "너도 이직해. 거기 왜 있어?" 모른다. 나도 모른다. 근데 여기 떠나면 서비스 터진다는 걸 안다. 그래서 못 떠난다. 점심시간도 못 쉰다. 진짜 쉬는 법을 잊었다 언제 마지막으로 점심시간에 진짜 쉬었을까. 밖에 나가서, 햇빛 보면서, 아무 생각 없이 밥만 먹었을까. 기억이 안 난다. 항상 노트북이 있었다. 항상 콘솔이 열려있었다. 항상 "혹시 모르니까" 확인했다. 이제는 확인 안 하면 불안하다. "점심시간에 장애 나면 어떡하지?" 그 생각이 밥 먹는 내내 머릿속에 있다. 대표님은 모른다 대표님은 점심 잘 먹는다. 밖에 나가서 회의하고, 맛있는 거 먹고 온다. "점심 맛있게 드세요!" 나한테 그렇게 말한다. 모른다. 내가 책상에서 먹는다는 걸. 모른다. 내가 콘솔 보면서 먹는다는 걸. 말 안 했으니까. "점심시간에도 일해요" 라고 말하면 뭐라고 할까. "그럼 쉬세요" 라고 할까? 근데 쉬면 누가 보는데? 비용 최적화는 점심 업무 S3 라이프사이클 정책 만든다. 30일 지난 로그는 Glacier로. 90일 지난 로그는 삭제. 이거 하는 데 20분 걸렸다. 점심시간 절반이다. 밥은 10분 만에 먹었다. 일은 20분 했다. 이게 맞나? 모르겠다. 근데 이번 달 비용 10만원 줄었다. "잘했네." 스스로 칭찬한다. 아무도 안 해주니까. EC2 인스턴스 타입 변경 점심 먹으면서 생각했다. t3.medium 쓰는데, 사용률이 30%밖에 안 된다. t3.small로 바꾸면 월 3만원 아낀다. 오늘 점심시간에 바꿨다. aws ec2 modify-instance-attribute밥 먹고, 명령어 치고, 다시 먹고. 30분 만에 끝냈다. 이게 점심시간 생산성이다. 쉬는 시간이 아니라 "조용히 일하는 시간"이다. 슬랙 알림음이 젓가락을 멈춘다 "띵동" 슬랙이다. 젓가락이 공중에 멈춘다. 심장이 빨라진다. 누가 멘션했나? 장애 알림인가? 확인한다. "[서버] 메모리 사용률 85%" "아..." 밥은 그대로 둔다. 터미널 연다. htop프로세스 확인한다. 메모리 많이 쓰는 놈이 있다. 재시작한다. 사용률 떨어진다. 10분 지났다. 밥이 완전히 식었다. "다시 데워야지." 세 번째 데운다. 오늘. 점심시간 30분 회사 규정상 점심시간은 1시간이다. 근데 실제로는 30분이다. 왜? 나머지 30분은 일하니까. 누가 시킨 거 아니다. 내가 알아서 한다. 안 하면 불안하다. "오후에 배포하는데 지금 상태 확인 안 하면..." 그 생각이 밥보다 크다. 그래서 본다. 확인한다. 점심시간에도. 카페 가는 동료 디자이너가 물었다. "같이 카페 갈래요?" "아, 전 여기서 먹을게요." "매일 책상에서 먹으시네요." "네, 편해서요." 거짓말이다. 편한 게 아니다. 그냥 못 나간다. 나가면 불안하다. 노트북 없으면 불안하다. 콘솔 안 보면 불안하다. 그래서 책상에 있는 게 편하다. 아니, 편한 척한다. 밥 먹으면서 로그 분석 에러 로그 1,247건. 대부분 타임아웃이다. 외부 API가 느리다. 그거 때문이다. "점심 먹고 처리해야지." 근데 점심 먹으면서 처리한다. 로그 필터링하고, 패턴 찾고, 이슈 정리한다. 밥은? 씹는 중이다. 근데 눈은 터미널에 있다. 멀티태스킹이 일상이 됐다. 비용 알람 설정 점심 먹으면서 CloudWatch 알람 만들었다. 일일 비용 3만원 넘으면 슬랙 알림. 이제 비용도 실시간으로 체크한다. 점심시간에 만들었다. 10분 걸렸다. 밥은 5분 만에 먹었다. 효율적이다. 근데 행복하진 않다. 점심시간이 개발 시간 기획자가 오전에 요청했다. "이거 급한데 오늘 중으로 돼요?" "네, 볼게요." 오전엔 회의 있었다. 오후엔 배포 있다. 그럼 언제? 점심시간이다. 밥 먹으면서 코드 짠다. const updateConfig = async () => { // 한 줄 쓰고 밥 한 입 }30분 만에 끝냈다. 밥도 먹고 일도 했다. 대표님이 보면 칭찬할까? "점심시간에도 일하네, 열심히 하네." 칭찬인지 모르겠다. 동료가 없는 점심 혼자 먹는다. 매일. 대기업 다니는 친구들은 팀원들이랑 먹는다. "오늘 뭐 먹을까?" 같이 고민한다. 나는? 혼자 고민한다. "오늘 뭐 먹을까? 그리고 어떤 일 할까?" 점심 메뉴보다 점심시간 업무가 먼저다. 동료가 있었으면 달랐을까. "야, 점심 먹으러 가자. 노트북 두고." 그런 말 해줄 사람 있었으면. 근데 없다. 혼자다. RDS 스냅샷 확인 점심 먹으면서 RDS 콘솔 봤다. 자동 백업 7일치 있다. 수동 스냅샷은 언제 찍었지? 2주 전이다. "오늘 하나 찍어놔야겠다." 오후에 DB 스키마 변경 있다. 지금 스냅샷 만든다. 밥 먹으면서 클릭 몇 번. 30분 걸린다. 백그라운드로 돌린다. 점심시간이 백업 시간이다. 에너지 드링크가 후식 밥 다 먹었다. 냉장고 연다. 에너지 드링크 꺼낸다. 오늘 첫 번째. 카페인 80mg. 타우린 1000mg. "오후 버텨야지." 마신다. 콘솔은 여전히 열려있다. Lambda 함수 실행 시간 체크한다. 평균 850ms. 좀 느리다. "코드 최적화 해야 하는데..." 메모해둔다. 언젠가 할 일 목록에. 근데 언젠가는 안 온다. 점심시간 30분 vs 실제 0분 회사 규정: 1시간 내 점심시간: 30분 진짜 쉬는 시간: 0분 밥 먹는 30분도 일한다. 노트북 보면서 먹는다. 콘솔 확인하면서 먹는다. 코드 짜면서 먹는다. 0분이다. 쉬는 시간 0분이다. "점심시간에 쉬었어?" 거짓말로 "네" 라고 한다. 진실은 "아니오"다. 언제 진짜 쉴까 모르겠다. 채용 되면? 그때까지 몇 개월 남았을까. 이직하면? 그럼 여기는 어떡하지. 서비스 안정화되면? 언제 되는데. 대표님이 이해해주면? 말 안 해봤는데. 답이 없다. 그냥 계속 이렇게 사는 건가. 점심시간도 일하면서. 저녁도 야근하면서. 주말도 온콜 대기하면서. 밥그릇 옆의 노트북 책상을 본다. 왼쪽: 빈 도시락 통 오른쪽: 노트북, AWS 콘솔 열려있음 가운데: 에너지 드링크 캔 이게 내 점심시간이다. 밥은 먹었다. 근데 쉬지 못했다. 몸은 영양을 섭취했다. 근데 정신은 일했다. "이게 맞나?" 질문한다. 답은 없다. 그냥 다시 일한다. 오후 1시 30분이다.점심 먹으면서 AWS 콘솔 보는 게 일상이 된 지 2년. 언제쯤 진짜 쉬면서 밥 먹을 수 있을까.
- 27 Dec, 2025
새벽 3시의 깨달음: 이것만 하고 자야지가 거짓말이었다
새벽 3시의 깨달음: 이것만 하고 자야지가 거짓말이었다 밤 10시의 나는 거짓말쟁이다 "이것만 하고 자야지." 밤 10시 내가 한 말이다. 거짓말이었다. 사무실에 나 혼자 남았다. 다들 7시에 퇴근했다. 대표님도 9시에 나가셨다. "수고하세요" 하시면서. 책상 위에 에너지 드링크 2캔. 아까 편의점에서 샀다. "하나만 마시면 되겠지" 했는데 벌써 반 캔 더 땄다. 해야 할 건 하나였다. 결제 모듈 버그 수정. 30분이면 끝날 거라고 생각했다. 지금 새벽 3시다. 결제 모듈은 고쳤다. 근데 할 일이 3개 더 생겼다.버그는 친구를 데려온다 결제 모듈 열었다. 코드 봤다. "아 이거네" 싶었다. 수정했다. 테스트했다. 됐다. 근데 이상했다. 로그를 봤다. 결제는 되는데 알림이 안 간다. "어? 이건 뭐지?" 알림 모듈 열었다. 코드가 이상하다. 3개월 전 내가 짠 건데 왜 이렇게 짰는지 모르겠다. 주석도 없다. 고쳤다. 테스트했다. 이번엔 알림은 가는데 문자 포맷이 깨진다. "미친." 문자 발송 API 문서 열었다. 파라미터가 바뀌어 있다. 언제 바뀐 거지. 공지 못 봤나. 수정했다. 다시 테스트했다. 이번엔 된다. 시계 봤다. 새벽 12시 반. "이제 자야지." 근데 문득 생각났다. 결제 모듈 고치면서 트랜잭션 처리를 바꿨다. 환불 로직도 확인해야 한다. 환불 코드 열었다. 망했다. 여기도 고쳐야 한다.코드는 도미노다 환불 로직 수정했다. 1시간 걸렸다. 테스트 케이스 돌렸다. 3개 실패했다. "아 맞다." 결제 금액 계산 로직을 바꿔서 환불 금액도 다시 계산해야 한다. 포인트 적립도 연동돼 있다. 쿠폰 할인도 있다. 다 뜯어고쳤다. 새벽 2시. "마지막 테스트만." 전체 테스트 돌렸다. 5분 걸린다. 기다리면서 폰 봤다. 슬랙 알림 꺼놨는데도 확인하게 된다. 습관이다. 테스트 통과했다. "됐다!" 기쁘다. 커밋하려고 했다. 근데 문득. "어? DB 마이그레이션은?" 결제 테이블 컬럼 하나 추가했었다. 프로덕션에 반영 안 했다. 지금 배포하면 터진다. 마이그레이션 스크립트 짰다. 조심스럽게. 프로덕션 DB는 건드리면 큰일난다. 로컬에서 테스트했다. 스테이징에서 테스트했다. 새벽 2시 40분. "이제 진짜 끝." 근데 또 생각났다. 이거 배포하면 모니터링 설정도 바꿔야 한다. 에러 로그 포맷이 바뀌었다. 클라우드워치 열었다. 알람 설정 수정했다. 슬랙 웹훅도 업데이트했다. 새벽 3시."이것만"은 없다 배포했다. 프로덕션 로그 지켜봤다. 10분. 에러 없다. 결제 들어온다. 알림 간다. 환불 테스트했다. 된다. "끝났다." 의자에 등 기댔다. 목이 뻐근하다. 손목도 아프다. 책상 정리했다. 에너지 드링크 캔 3개. 과자 봉지 2개. 언제 먹었는지 기억도 안 난다. 노트북 덮으려다 멈췄다. 슬랙 봤다. 대표님이 오후 11시에 남긴 메시지. "내일 오전 회의에서 신규 기능 기획 공유할게요. 급한 건 아니니까 다음 주까지만 개발 가능할까요?" 다음 주. 월요일부터 금요일까지 5일. 신규 기능. 프론트 새로 짜야 한다. API도 3개는 만들어야 한다. DB 테이블도 추가해야 한다. 5일. 혼자. "이것만 하면 되겠지." 새벽 3시 30분. 또 거짓말한다. 왜 못 멈추는가 집 가야 한다. 알고 있다. 근데 지금 가면 찝찝하다. 배포한 거 모니터링 좀 더 해야 한다. 혹시 모른다. 새벽에 주문 몰리면 어쩌지. 핑계다. 사실 알고 있다. 진짜 이유는 다르다. 나 말고는 없다. 이거 고칠 사람이. 확인할 사람이. 책임질 사람이. 혼자 개발팀이다. 프론트도 나. 백엔드도 나. DB도 나. 인프라도 나. 배포도 나. 장애 대응도 나. 대표님한테 말했다. 3개월 전에. "개발자 한 명 더 뽑아야 합니다." "알아요. 근데 아직 여유가 없어서요. 조금만 버텨주세요." 조금이 3개월이다. 이직 생각한다. 매일. 근데 못 한다. 여기 떠나면 서비스 터진다. 알고 있다. 코드 인수인계 받을 사람도 없는데. 책임감인지 집착인지 모르겠다. 그냥 밤 10시에 "이것만 하고" 시작해서 새벽 3시에 끝나는 게 일상이다. 새벽 3시의 일기 노트북 덮었다. 진짜로. 사무실 불 껐다. 현관문 잠갔다. 엘리베이터 탔다. 밖에 나왔다. 춥다. 12월이다. 편의점 들렀다. 삼각김밥 하나. 우유 하나. 에너지 드링크는 안 샀다. 이제 자야 한다. 집 도착했다. 샤워했다. 침대 누웠다. 폰 봤다. 슬랙 알림 켜졌다. "클라우드워치 알람: CPU 사용률 80% 초과" 일어나서 노트북 켰다. 새벽 4시. "이것만 확인하고 자야지." 또 거짓말이다.밤 10시의 "이것만"은 새벽 3시의 "또 3개"가 된다. 풀스택 개발자의 밤은 길고, 거짓말은 반복된다. 내일도 10시에 "이것만 하고 자야지" 할 것이다. 그리고 새벽 3시에 이 글을 다시 읽을 것이다.
- 26 Dec, 2025
Docker 설정부터 배포까지: DevOps도 내 몫이다
Docker 설정부터 배포까지: DevOps도 내 몫이다 어느 날 나는 DevOps 엔지니어가 되어 있었다 풀스택 개발자로 입사했다. JD에는 "React, Node.js 가능자" 라고 써있었다. 첫 출근날 대표님이 말했다. "AWS 계정 드렸어요. 배포 환경은 알아서 구축해주시면 돼요." 그날부터 나는 DevOps 엔지니어다. Docker, Kubernetes, CI/CD, 모니터링, 로그 수집, 백업, 보안. 전부 내가 한다. 개발자가 나 혼자라서 그렇다. 누가 할 사람이 없다.Docker부터 시작한 이유 처음엔 EC2에 바로 배포했다. Node.js 설치하고, PostgreSQL 설치하고, Nginx 설정하고. 한 달 뒤 서버가 터졌다. 뭐가 문제인지 모르겠다. 로컬에선 되는데 서버에선 안 된다. 버전 문제? 환경변수 문제? 3시간 삽질 후 깨달았다. "환경을 통일해야 한다." 그게 Docker였다. Dockerfile 작성했다. 처음엔 FROM node:14만 썼다. 지금은 multi-stage build로 이미지 크기 500MB에서 150MB로 줄였다. .dockerignore도 만들었다. node_modules 안 들어가게. docker-compose.yml도 만들었다. DB, Redis, API 한 번에 띄우게. version: '3.8' services: api: build: . ports: - "3000:3000" depends_on: - db db: image: postgres:14 environment: POSTGRES_PASSWORD: ${DB_PASSWORD}로컬에서도 쓴다. docker-compose up 하면 개발 환경 준비 끝. 새로 합류할 개발자 있으면 (언젠가) 바로 시작할 수 있다. ECR에 이미지 올리고 ECS로 돌리고 처음엔 EC2에 Docker 설치하고 거기서 돌렸다. 배포할 때마다 SSH 접속해서 git pull, docker build, docker run. 새벽 2시에 긴급 배포하면서 생각했다. "이거 자동화해야 한다." AWS ECR에 이미지 올리기로 했다. 로컬에서 빌드 → ECR push → EC2에서 pull → 컨테이너 재시작. 그것도 귀찮아서 ECS로 갈아탔다. Fargate 쓴다. 서버 관리 안 해도 된다. Task Definition 만들고, Service 만들고, Load Balancer 연결하고. 처음 설정하는데 이틀 걸렸다. 문서 보면서 삽질. 근데 한 번 만들어두니까 편하다. 새 이미지 푸시하면 자동으로 교체된다. 블루-그린 배포도 설정했다. 무중단 배포. 대표님이 "오, 전문적이네요" 했다. 뿌듯했다. 3일 밤샘한 건 안 말했다.GitHub Actions로 CI/CD 구축 배포 자동화했다고 끝이 아니다. 빌드 → 테스트 → 이미지 푸시 → 배포. 이 과정을 자동화해야 한다. GitHub Actions 쓴다. 무료 티어로도 충분하다. .github/workflows/deploy.yml 만들었다. main 브랜치에 푸시하면 자동으로 돌아간다. name: Deploy on: push: branches: [ main ] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Build Docker image run: docker build -t myapp . - name: Push to ECR run: | aws ecr get-login-password | docker login ... docker push ... - name: Deploy to ECS run: aws ecs update-service ...실제론 더 복잡하다. 환경변수, 시크릿, 롤백 로직. 처음엔 실패했다. IAM 권한 문제, 환경변수 누락, 타임아웃. 로그 보면서 하나씩 고쳤다. 지금은 커밋 푸시하면 10분 뒤 배포 완료된다. 슬랙에 알림 온다. "Deployment successful ✅" 실패하면 롤백된다. "Deployment failed ❌ Rolling back..." 혼자 만들었다. 뿌듯하다. 근데 유지보수도 혼자 한다. 피곤하다. 모니터링은 필수다 배포하고 끝이 아니다. 서버 살아있는지 봐야 한다. CloudWatch 쓴다. CPU, 메모리, 네트워크 지표. 알람 설정했다. CPU 80% 넘으면 슬랙 알림. 새벽 4시에 알림 왔다. CPU 95%. 뭔가 터졌다. 급하게 노트북 켜서 확인했다. 무한 루프 버그였다. 롤백했다. 10분 만에 복구. 그 뒤로 알람을 더 세밀하게 만들었다. 에러율 5% 넘으면 알림, 응답속도 2초 넘으면 알림, 메모리 부족하면 알림. Sentry도 붙였다. 프론트/백엔드 에러 추적. 에러 나면 슬랭에 바로 온다. 스택 트레이스까지. 덕분에 새벽 알림이 더 늘었다. 주말에도 온다. 디테일하게 설정한 내 잘못이다.로그는 어디로 가는가 서버 여러 대 돌아간다. ECS task 3개. 각 컨테이너가 로그를 뱉는다. 어디서 봐야 하나. CloudWatch Logs에 다 모인다. Log Group 만들어뒀다. 근데 찾기 힘들다. 로그가 너무 많다. "5분 전에 에러 났는데 어디 있지?" 스크롤 하다가 지친다. ElasticSearch 고려했다. 비싸다. 월 100만원. 대신 CloudWatch Insights 쓴다. 쿼리 짜서 검색한다. SQL 비슷하다. fields @timestamp, @message | filter @message like /ERROR/ | sort @timestamp desc | limit 100에러 로그만 필터링해서 본다. 특정 사용자 요청 추적도 가능하다. Request ID로 그룹핑. 처음엔 쿼리 짜는 게 어려웠다. 지금은 익숙하다. 대표님이 "이 기능 왜 느려요?" 물으면 로그 바로 뽑는다. "14:32:05에 DB 쿼리가 3초 걸렸네요. 인덱스 문제입니다." 데이터로 말한다. 설득력 있다. 백업과 재해 복구 처음엔 백업 신경 안 썼다. "PostgreSQL RDS 쓰는데 자동 백업되지 않나?" 된다. 근데 복구 테스트는 안 해봤다. 어느 날 대표님이 물었다. "DB 날아가면 어떻게 되나요?" "...RDS 스냅샷이 있습니다." "복구해본 적 있어요?" 없었다. 그날 밤 복구 시나리오 짰다.RDS 스냅샷 복원 (30분 소요) 환경변수 업데이트 ECS task 재시작 헬스체크 확인테스트 환경에서 해봤다. 1시간 걸렸다. 프로덕션에서 하면 더 걸릴 것 같다. 압박 받으면 실수한다. 스크립트 만들었다. 복구 절차 자동화. S3에 매일 백업도 추가했다. DB 덤프 떠서 올린다. 이제 조금 안심이다. 완전히는 아니다. 재해 복구 계획서도 썼다. 대표님께 공유했다. "전문적이네요." 또 들었다. 근데 이거 원래 DevOps 팀이 할 일 아닌가. 보안은 끝이 없다 AWS 계정 만들고 바로 했던 것. MFA 설정. 루트 계정은 봉인했다. IAM 유저로만 쓴다. 권한은 최소한으로. 필요한 것만 준다. 시크릿은 코드에 안 넣는다. 환경변수나 Secrets Manager. 처음엔 환경변수에 직접 박았다. .env 파일. 그게 git에 올라갔다. API 키가 public repo에. 바로 삭제하고 키 재발급했다. 식은땀 났다. 지금은 AWS Secrets Manager 쓴다. 코드에서 불러온다. 비밀번호도 rotation 설정했다. 90일마다 바뀐다. 보안 그룹도 손봤다. 불필요한 포트 다 막았다. SSH는 내 IP에서만 접근 가능. RDS는 VPC 내부에서만 접근. Load Balancer만 외부에 노출. AWS Inspector 돌려봤다. 취약점 스캔. 몇 개 나왔다. 패치 적용했다. Security Hub도 켰다. 대시보드로 한눈에. 이거 다 공부하는 데 한 달 걸렸다. 보안은 끝이 없다. 근데 해야 한다. 한 번 뚫리면 끝이다. 비용 최적화는 계속된다 AWS 계정 만든 첫 달. 청구서 30만원. "왜 이렇게 나왔지?" Cost Explorer 열었다. 항목별로 나온다. NAT Gateway가 15만원. 왜? 트래픽이 많아서? 아니다. 설정을 잘못했다. VPC endpoint 만들어서 해결. 비용 70% 감소. ECS Fargate도 비쌌다. Task 계속 돌아간다. 스케줄링 넣었다. 새벽에는 task 줄인다. 트래픽 적으니까. RDS는 Reserved Instance로 바꿨다. 1년 약정. 40% 할인. S3는 Intelligent-Tiering 설정. 자주 안 쓰는 건 Glacier로. CloudWatch Logs는 retention 30일. 오래된 건 삭제. 지금은 월 18만원 정도. 반으로 줄었다. 매주 Cost Anomaly Detection 확인한다. 비정상 지출 있으면 알림. 대표님이 "비용 관리 잘하네요" 했다. 당연하다. 회사 돈이고, 내 월급이 여기서 나온다. 근데 이것도 개발자가 할 일인가 싶다. 언제부터 나는 DevOps 엔지니어였나 JD엔 풀스택 개발자라고 했다. 입사 3년. 이제 뭐가 내 업무인지 모르겠다. 프론트 개발 30%, 백엔드 개발 30%, DevOps 40%. 비율로 따지면 DevOps가 제일 많다. Docker, AWS, CI/CD, 모니터링, 로그, 백업, 보안, 비용. 전부 혼자 공부했다. 유튜브, 문서, 삽질. AWS 공인 자격증도 땄다. Solutions Architect Associate. 회사에서 시험비 지원해줬다. 15만원. 합격하고 나서 연봉 협상했다. "DevOps 업무 비중이 크니 조정 필요합니다." 올랐다. 300만원. 연봉 5100만원. 감사하다. 근데 시장가보다는 낮다. 이직하면 6500만원은 받을 수 있다. DevOps 경력 3년이면. 근데 못 간다. 여기 내가 만든 인프라다. 내가 없으면 배포 못 한다. 장애 대응 못 한다. 책임감이다. 아니면 집착이다. 동기가 물었다. "너 언제까지 거기 있을 거야?" 모르겠다. 개발자 한 명 더 뽑히면 그때 생각해본다. 근데 6개월째 안 뽑힌다. 풀스택에서 원맨밴드로 요즘 명함에 뭐라고 써야 할지 모르겠다. Full-stack Developer? DevOps Engineer? SRE? 전부 맞는 것 같기도 하고, 전부 틀린 것 같기도 하다. 정확하게는 "혼자 다 하는 사람"이다. 기획자가 "이 기능 추가해주세요" 하면 프론트 만들고. 백엔드 API 만들고, DB 스키마 수정하고. Docker 이미지 빌드하고, ECR에 푸시하고. ECS 배포하고, 모니터링 설정하고. 장애 나면 로그 보고, 원인 찾고, 패치하고. 비용 넘치면 최적화하고. 보안 이슈 나면 대응하고. 이게 한 사람의 일인가. 대기업 가면 이 일을 팀 단위로 나눠서 한다. 프론트팀, 백엔드팀, DevOps팀, SRE팀. 여긴 나 혼자다. 장점은 빠르다. 의사결정 필요 없다. 그냥 한다. 단점은 외롭다. 코드리뷰 없다. 내 방식이 맞는지 모른다. 기술 부채 쌓인다. 리팩토링할 시간 없다. 기능 개발이 우선이다. 번아웃 온다. 온콜 24시간. 휴가 못 간다. 내가 없으면 서비스 멈춘다. 그래도 배운 건 많다. 3년 전엔 Docker가 뭔지도 몰랐다. 지금은 Kubernetes도 할 수 있다. 필요하면. AWS는 10개 넘는 서비스 쓴다. 손에 익었다. 이력서는 화려해졌다. 실무 경험 빡빡하다. 이직하면 잘 나갈 것 같다. 근데 지금은 여기서 버틴다. 조금만 더. 다음 개발자를 위한 문서 언젠가 개발자가 한 명 더 들어올 것이다. 그 사람을 위해 문서 쓴다. "온보딩 가이드", "배포 매뉴얼", "장애 대응 플레이북". Notion에 정리한다. 스크린샷 넣고, 명령어 적고. 다음 사람이 나처럼 삽질 안 하길 바란다. README.md도 열심히 쓴다. "로컬 환경 설정", "환경변수 설정", "Docker로 실행하기". 코드에 주석도 단다. "왜 이렇게 했는지" 설명. 미래의 나를 위해서이기도 하다. 6개월 뒤엔 내가 쓴 코드도 이해 못 한다. 그때 주석 보고 "아, 그래서 이렇게 했구나" 한다. 문서화는 시간 많이 걸린다. 근데 안 하면 더 걸린다. 같은 질문 받고, 같은 설명 반복하는 시간. 한 번 써두면 계속 쓴다. 대표님도 본다. "문서 정리 잘 되어있네요." "나중에 팀 커지면 도움 될 겁니다." 나중이 언제인지 모르겠지만, 준비는 해둔다.개발자인데 DevOps 엔지니어 됐다. 아니, 될 수밖에 없었다. 혼자니까. 그래도 배운 건 많다. 지치긴 하지만.
- 25 Dec, 2025
월급날도 기쁘지 않다: 스톡옵션이 선물인가 짐인가
월급날인데 기쁘지 않다 오늘 월급날이다. 통장에 320만원 찍혔다. 세전 400만원. 연봉 4800만원을 12로 나눈 금액. 여기에 스톡옵션 0.5%가 있다. 대표님이 말했다. "지금은 적어 보여도 회사 성공하면 큰돈이에요." 그래서 계산해봤다. 회사 가치 1000억 되면 5억. 2000억 되면 10억. 문제는 그때까지 내가 버틸 수 있냐는 거다.스톡옵션이라는 선물상자 입사할 때 대표가 말했다. "우리 빠르게 성장하고 있어요. 지금 들어오시면 초기 멤버로 스톡옵션 드립니다." 계약서에 써있었다. 0.5%. "적지 않은 지분이에요." 나는 고개를 끄덕였다. 그때는 좋아 보였다. 3년이 지났다. 회사는 여전히 스타트업이다. 직원은 12명. 투자는 시드 라운드 10억. 매출은... 물어보지 않았다. 스톡옵션은 내 서랍에 있다. 종이 한 장. 가끔 꺼내본다. 이게 뭔가 싶어서. 계산기를 두드린다. 회사 가치 100억 되면 5천만원. 200억 되면 1억. 1000억 되면 5억. 그런데 언제? 대표는 말한다. "내년에는 시리즈 A 받을 거예요." 작년에도 들었던 말이다. 투자자 미팅 있다고 한다. 나는 데모 준비한다. 버그 없어야 한다. 새벽까지 테스트한다. 미팅 결과는 "긍정적이었다"고 한다. 투자는 안 들어온다. 이게 반복된다.성공하면 누가 개발하나 회사가 성공하려면 서비스가 잘 돌아야 한다. 서비스가 잘 돌려면 개발자가 필요하다. 개발자는 나다. 나 혼자다. 프론트엔드 나. 백엔드 나. 인프라 나. DB 나. 배포 나. 장애 대응 나. 채용 공고는 6개월째 올라가 있다. 지원자는 없다. 연봉 4500만원으로는 안 온다. 회사는 더 못 준다. 그러면 나는 계속 혼자다. 대표가 말한다. "투자 받으면 채용할게요. 그때까지만 버텨주세요." 그때가 언제인데. 시나리오를 생각해본다. 회사가 성공한다. 투자 받는다. 매출 난다. 가치 올라간다. 내 스톡옵션 가치도 올라간다. 좋다. 그런데 그 성공을 누가 만드나. 나다. 혼자서. 24시간 온콜로. 주말도 없이. 휴가도 못 가고. 그렇게 버티다가 회사가 정말 성공한다. 시리즈 B 받는다. 직원 50명 된다. 개발팀 10명 생긴다. 그때 나는 어떤 상태일까. 번아웃. 탈모. 디스크. 불면증. 5억 받고 병원 가는 건가. 아니면 그 전에 쓰러지는 건가.이직 공고를 본다 요즘 채용 공고를 자주 본다. 대기업. 중견 IT. 연봉은 6000만원대. 스톡옵션 없다. 대신 워라밸 있다. 개발팀 10명. 온콜 로테이션. 지원할까 고민한다. 그런데 못한다. 왜냐면. 내가 떠나면 서비스 터진다. 확실하다. 나 말고 아무도 코드 모른다. 배포 프로세스 모른다. 인프라 구조 모른다. 대표한테 이직 얘기하면 "조금만 더 버텨주세요" 할 게 뻔하다. 그리고 덧붙인다. "스톡옵션 생각해보세요. 곧 가치 올라갈 거예요." 이게 함정이다. 지금 떠나면 스톡옵션 날린다. 3년 베스팅 채우려면 1년 더 있어야 한다. 1년 더 버티면 0.5% 확정된다. 그런데 그 0.5%가 얼마나 될지 모른다. 회사 가치 100억이면 5천만원. 세금 떼면 3천만원. 3년 버티고 받는 3천만원. 연봉 6000만원 회사 가면 1년에 2000만원 더 받는다. 3년이면 6000만원. 게다가 워라밸. 건강. 계산기를 두드린다. 계속 두드린다. 답은 나온다. 그런데 못 떠난다. 책임감 때문이다. 서비스 터뜨릴 수 없다. 대표를 배신할 수 없다. 그래서 남는다. 오늘도. 월급날의 루틴 월급날이다. 통장 확인한다. 320만원. 월세 80만원 나간다. 240만원 남는다. 생활비 100만원. 적금 50만원. 부모님 용돈 30만원. 60만원 남는다. 이 60만원으로 한 달을 버틴다. 외식. 커피. 에너지 드링크. 택시비. 새벽 배달. 저축은 적금 50만원이 전부다. 3년 모으면 1800만원. 친구들은 대기업 다닌다. 연봉 7000만원. 적금 월 200만원. 전세자금 모은다. 나는 스톡옵션이 있다. 0.5%. 위로가 되지 않는다. 대표가 말한다. "올해는 좋은 해가 될 거예요." 작년에도 들었다. 재작년에도 들었다. 슬랙 알림이 온다. 장애다. 금요일 밤 11시. 노트북을 연다. 터미널을 킨다. 로그를 확인한다. 월급날인데 일한다. 추가 수당은 없다. 스톡옵션이 있으니까. 고친다. 배포한다. 모니터링한다. 새벽 2시. 침대에 눕는다. 천장을 본다. 5억. 10억. 회사가 성공하면. 그때까지 버틸 수 있을까. 모르겠다.월급은 찍혔는데 기쁘지 않다. 스톡옵션은 있는데 언제 빛을 볼지 모른다. 그냥 오늘도 일한다.