Showing Posts From

Aws

점심시간에 AWS 콘솔: 쉬어야 할 시간도 일이다

점심시간에 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년. 언제쯤 진짜 쉬면서 밥 먹을 수 있을까.

AWS 콘솔, 내 유일한 악몽의 원천

AWS 콘솔, 내 유일한 악몽의 원천

AWS 콘솔, 내 유일한 악몽의 원천 점심을 먹고 있었다. 김밥이었다. 회사 근처 편의점 김밥. 3500원짜리 그것. 슬랙을 봤다. 안 봐야 할 걸. 스타트업이라 전사 채널에서 무언가 자꾸 울린다. 어? 빌링 얘기다. 대표가 물었다. "이번 달 AWS 비용이 왜 또 올랐어?" 김밥을 씹는 손이 멈췄다. 입에는 밥이 들어있는데 머리는 이미 AWS 콘솔로 날아가 있었다. 마우스를 쥐었다. 노트북을 켰다. 모니터를 본 순간, 이번 달 비용이 나를 노려보고 있었다. 6500만원. 지난달은 5800만원이었다. 700만원이 또 올랐다. 뭐를 했는가? 뭐를 했지?"언제부턴데 인프라가 내 일이 됐어?" 내 직함은 풀스택 개발자다. 근데 이게 뭐 하는 일인지 아무도 모른다. 나도 안다. 전부 하는 거다. 프론트엔드를 쓰고, 백엔드를 짜고, DB를 만들고, 클라우드에 올리고, 모니터링하고, 장애 나면 고치고. 그리고 이제 인프라 비용까지 노려보고 있다. 누가 정했냐면, 스스로다. 아니다. 대표가 정했다. "너 클라우드 잘 알잖아. 인프라 봐줄 수 있지?" 첫 날에 "세팅해드리겠습니다"라고 했다. 빅 실수다. 그건 이제 내 책임이 됐다. EC2, RDS, S3, CloudFront, Lambda, 뭔지도 모르는 것들. 다 내 책임. 컴퓨터가 켜지면 나한테 온다. 컴퓨터가 꺼져도 온다. 관리 콘솔에 로그인하는 순간부터, 나는 더 이상 개발자가 아니다. 나는 DevOps도 아니고 인프라 엔지니어도 아니다. 그냥... 누군가는 해야 하니까 하는 사람이 되는 거다. 6개월 전에는 몰랐다. 무언가 잘못되면 "아, 뭔가 이상한데?" 정도. 지금은 다르다. AWS 콘솔을 열면 대시보드가 날 쏴다본다. 비용, 비용, 비용. 그래프가 꺾이질 않는다.비용 상승곡선과 내 멘탈 점심에 김밥을 마시고 (물론 씹었지만 마신 기분) AWS 콘솔을 들었을 때, 첫 번째 확인할 것은 역시 청구서다. 아니, 청구서는 월 말에 나온다. 예상 비용. 현재 진행 중인 이 달의 악몽. "Cost Explorer"라는 이름이 웃기다. 마치 비용을 탐험하고 즐기는 것처럼 들린다. 나는 탐험 중이다. 매일매일 새로운 비용 항목을 발견한다.RDS: 왜 이렇게 비싼데? 디비 한 개잖아. 아 근데 자동 백업이 스토리지 3배를 쓰네? EC2: 24시간 켜놓은 t3.xlarge. 혼자 백엔드 서버, 캐시, 배치 작업 다 돌려. 돈을 안 들 수가 없지. NAT Gateway: 존재도 몰랐다. 그냥... 있더라. 월 32만원. 뭐하는 애인데? CloudFront: CDN이라고 하더니 뭔가 계속 비용이 난다. 그 외 모르는 것들: 로깅, 모니터링, 뭐... 뭐하는 애들인데 돈이 자꾸 나온다.사실 대부분은 필요 없다. 근데 없애면 장애가 난다. 자동 백업을 없애면 DB 터지면 끝이다. NAT Gateway를 없애면 프라이빗 서브넷에서 나갈 수가 없다. 뭔지는 몰라도 없애면 안 된다. 그래서 매달 700만원씩 올라간다. 어디서? 모른다. 알고 싶지도 않다. 알면 뭘 하나? 고칠 게 있나? 없다.독당한 기술 의사결정 스타트업이니까 "비용 최적화"를 해야 한다고 했다. 대표가. 개발팀(나)에게. 비용 최적화. 아름다운 단어다. 그래서 뭐를 했나?RDS 자동 백업 주기를 2주 -> 3주로 늘렸다. 누가 2주 백업이 필요한지는 몰라도 일단 줄였다. EC2를 t3에서 t2로 낮추려 했다. 근데 앱이 자꾸 튕긴다. 다시 올렸다. S3 스토리지 클래스를 GLACIER로 바꾸려 했다. 원본 이미지를 다 Glacier에 넣었다. 그다음 날 대표가 이미지를 빨리 가져와야 한다고 했다. 돈을 더 써서 복구했다.그 다음부턴 손을 안 댔다. 너무 아프다. 눈도 아프고 마음도 아프다. 대신 나는 깨달았다. "효율"과 "안정성"은 거의 항상 돈으로 결정된다는 걸. 그리고 그 돈은 항상 내가 마주쳐야 한다는 걸. 대표는 "좀 줄여봐"라고 한다. 개발팀(나)는 "줄이면 터져요"라고 한다. 결국 현상 유지다. 그리고 비용은 해마다 올라간다. 뭐, 서비스가 성장하니까 당연하다고 생각한다. 근데 매달 확인할 때마다 속이 철렁거린다. 700만원. 그게 내 월급의 15분의 1이다. 콘솔 탭이 자꾸 늘어나는 이유 AWS 콘솔을 켜면 탭이 자꾸 많아진다.Billing Dashboard: 얼마나 썼나 Cost Explorer: 어디에 썼나 EC2 콘솔: 서버 뭐하는지 RDS 콘솔: DB 건강한가 CloudWatch: 로그는 떠 있나 Lambda: 배치 작업 돌고 있나 VPC: 네트워크 어떻게 돼 있나 S3: 파일 경로 맞나 IAM: 권한 누가 뭐 했나 Support: 뭔가 에러가 떴나보통 8개에서 12개 탭 사이를 오간다. 모두 불안감에서 출발한다. 혼자라는 게 문제다. 만약 누군가 인프라를 담당한다면 나는 이 탭들을 절대 열지 않을 것이다. 열 필요가 없으니까. 근데 혼자니까 뭐가 잘못되면 나한테 온다. 그래서 계속 본다. 문제가 없어도 본다. 있을 것 같아서. 장애 나면 AWS 콘솔이 첫 번째 범죄 현장이 된다. "뭐가 터졌어? 여기도? 저기도?" 진짜 터진 건 보통 뭔가 설정이 자동으로 이상해진 거다. AWS 업데이트, 누군가의 실수, 아니면 그냥 "이 정도면 될 줄 알았는데?" 같은 내 판단 미스. 그럼 나는 구글링을 한다. StackOverflow를 본다. AWS 공식 문서를 읽는다. 대부분 읽을 수 없다. 너무 복잡하다. 그래서 결국 "off-on"을 한다. 다시 켰다 껐다 한다. 신기하게 그럼 된다. 70%의 경우. 30%는? 야근을 한다. [IMAGE_4] 매달 월급의 일부가 구름으로 올라간다 4800만원을 받는다. 세금을 떼니까 3600만원 정도다. 월급이 300만원이다. 그런데 AWS 비용이 650만원이다. 같은 회사에서 나오는 돈이다. 내가 받는 월급보다 2배 이상이 인프라에 간다. 이게 맞나? 하는 생각이 자꾸 든다. 근데 이건 내가 정할 일이 아니다. 인프라 비용은 "사업"이다. 내 월급과 다르다. 하지만 내가 챙겨야 한다. "좀 줄여봐" 또 들을 거다. 매달 들을 거다. 그러면 또 뭔가를 없애거나 설정을 바꿀 거다. 그럼 또 뭐가 터질 거다. 그럼 또 밤을 새울 거다. 악순환이다. 근데 악순환인 줄 알면서도 못 빠져나간다. 왜냐하면 이게 내 책임이니까. 누가 물으면 "제가 봐야겠습니다"라고 대답한다. 매번. 비용 최적화 계획 (3번째) 처음엔 "앗, 인프라 공부해야겠다"는 마음으로 시작했다. 지금은 다르다. 깨달았다. 공부해봐야 같은 거다. 정보는 많지만 답은 없다. 왜냐하면 최적이란 개념이 없으니까. 있는 건 "트레이드오프"뿐이다.비용 줄이다가 장애 난다. 장애 안 나게 하다가 비용이 올라간다. 비용 최적화하다가 서비스 느려진다. 서비스 빨리하다가 비용이 올라간다.현재 우리는 "적당한 비용에 적당히 괜찮은 서비스"를 하고 있다. 누군가는 "저 비용 줄일 수 있지 않나?"라고 생각한다. 그 누군가는 보통 개발비는 안 들어본 사람이다. 나는 매달 3번은 AWS 비용 줄이는 계획을 짠다. 계획은 실행되지 않는다. 왜냐하면 우선순위가 항상 "새 기능"이니까. 그럼 다음달엔 비용이 또 올라간다.아직도 AWS 콘솔을 매일 본다 점심을 마치고 노트북을 닫으려던 순간, 또 봤다. Billing 탭. 이번 달은 700만원인가? 아니면 800만원인가? 알고 싶은데 알고 싶지 않은 그런 기분. 의사가 검사 결과를 내밀려고 할 때 그 기분. 어쨌든 난 본다. 매일.[IMAGE_1] [IMAGE_2] [IMAGE_3] [IMAGE_4]