분류 전체보기60 테스트 자동화로 밤샘 배포를 끝낸 방법: CI 파이프라인 실전 경험 1. 왜 테스트 자동화를 시작했나매주 배포가 있던 프로젝트였습니다. 배포 전날 밤마다 수동 테스트 체크리스트를 돌렸고, 이메일로 결과를 공유했습니다. 문제는 같은 실수가 반복된다는 점이었습니다. 이전에 고쳤던 버그가 배포 직후 다시 나타나기도 했고, 수동 테스트는 두 시간 이상 걸리면서도 꼼꼼함을 보장하지 못했습니다. 어느 날 배포 후 장애가 발생했는데, 원인은 체크리스트에 빠져 있던 케이스였습니다. 그날 이후 저는 테스트 자동화를 본격적으로 시작했습니다.2. 첫 단계: 핵심 로직부터 단위 테스트처음에는 모든 코드를 테스트하려 했습니다. 하지만 레거시 코드는 테스트가 어려웠고, 시간 대비 효과가 떨어졌습니다. 전략을 바꿔 핵심 비즈니스 로직부터 테스트를 작성했습니다. 주문 계산, 할인 정책, 상태 전환처.. 2026. 8. 8. 카오스 엔지니어링: 고의로 부수지 않으면 진짜 강해질 수 없다 새벽 3시, 문자 알림 하나가 울렸다. "결제 서비스 응답 지연 발생." 반쯤 잠이 깬 상태로 노트북을 열었고, 그림자처럼 늘어선 에러 로그를 보며 한숨을 내쉬었다. 원인은 단순했다. 장애 조치(failover)가 자동으로 일어나지 않았다. 우리는 그걸 "설계엔 있었지만 실제론 안 된다"고 표현했다. 문서상으로는 철저한 이중화였지만, 한 번도 실제로 검증해 본 적이 없었기 때문이다. 그날 이후 저는 "장애는 예방하는 게 아니라 예행연습으로 겪어보는 것"이라는 확신을 갖게 됐다. 그리고 그 확신의 끝에 카오스 엔지니어링이 있었다.▲ 장애 주입 실험 결과 화면카오스 엔지니어링이란 무엇인가카오스 엔지니어링은 시스템에 고의로 장애를 주입해 복원력을 검증하는 실험적 방법론이다. 넷플릭스가 2010년대 초반 자체 .. 2026. 8. 3. 레거시 코드와의 동행: 낡은 시스템을 대하는 개발자의 자세 입사 첫 주, 저에게 맡겨진 업무는 15년 묵은 주문 처리 시스템의 유지보수였습니다. 최신 기술 스택을 자유롭게 써보게 해줄 거라 기대했던 저는, 세상에 존재하는 모든 전역 변수를 다 끌어다 쓰는 거대한 함수 하나와 마주했습니다. 함수 하나가 천 줄이 넘어갔고, 중간중간 죽은 코드와 알 수 없는 매직 넘버가 즐비했습니다. 그 당시에는 절망스러웠지만, 지금 돌아보면 레거시 코드는 개발자에게 가장 훌륭한 스승 중 하나였다고 생각합니다.▲ 실제 마주친 레거시 코드 예시레거시 코드는 왜 생겨나는가레거시 코드는 단순히 오래된 코드가 아닙니다. 현재의 비즈니스 규칙이 왜 그렇게 됐는지 아무도 설명하지 못하는 코드, 새로운 요구사항이 닥칠 때마다 조금씩 덧붙여진 패치의 집합체입니다. 중요한 건 "오래됐다"는 사실보다.. 2026. 8. 2. 실전 로깅과 모니터링: 장애 대응에서 배운 5가지 교훈 내가 로깅과 모니터링의 중요성을 뼈저리게 깨달은 건, 새벽 3시에 터진 장애 때였어요. 알림이 안와서 출근해서야 장애를 발견했습니다. 사용자 불만은 이미 폭주한 뒤였고요. 그때부터 진짜 로깅과 모니터링을 제대로 공부하기 시작했습니다. 오늘은 그동안 겪은 삽질과 교훈을 공유할게요.▲ ELK 스택 로그 대시보드1. 로그는 그냥 찍지 마라, 구조화하라예전 회사에서는 System.out.println("에러 발생: " + e.getMessage()) 이런 식으로 로그를 찍었습니다. 개발자마다 형식이 달라서 "문제 생겼음" 이런 로그도 있고, "2026-07-26 10:30:00 ERROR 뭔가 터짐" 이런 로그도 있고 난리였어요. 장애나면 로그 파일 열어서 ctrl+F로 일일이 찾는게 일상이었습니다. 어느날 새.. 2026. 7. 26. API 설계 철학: REST에서 GraphQL까지, 현업에서 배운 7가지 원칙 예전에 스타트업 다닐 때 API가 진짜 개판이었습니다. "이 API 왜 응답이 이렇게 커?" "하위 호환성 깨졌잖아!" 이런 대화가 매일 오갔어요. 팀장이 "API 설계 원칙 한번 정리해봐" 하더라고요. 그래서 시작했는데 생각보다 deep한 세계였어요. 오늘은 그때 배운거랑 이후에 느낀 점들 좀 풀어볼게요.▲ OpenAPI로 생성한 API 명세 화면1. 이름 짓기제가 들어갔을때 API가 진짜 개판이었어요. 어떤건 /getUser고 어떤건 /users고, 심지어 /getUserList 이런것도 있었습니다. HTTP 메서드도 안지켜서 삭제하는데 GET 쓰고, 조회하는데 POST 쓰고 난리였어요. 다 명사 복수형으로 통일하고 GET/POST/PUT/PATCH/DELETE로 구분하는걸로 고쳤습니다. GET /u.. 2026. 7. 26. 마이크로서비스 아키텍처(MSA)와 컨테이너 오케스트레이션: 현대 소프트웨어 개발의 패러다임 전환 요즘 IT 업계에서 MSA, 도커, 쿠버네티스라는 단어를 안 들어본 사람이 있을까 싶다. 채용 공고만 봐도 "쿠버네티스 경험자 우대"는 기본이고, 심지어 주니어 포지션에서도 컨테이너 오케스트레이션 경험을 요구하는 경우가 많아졌다. 사실 5~6년 전만 해도 이런 건 인프라팀이나 하는 영역이라고 생각하는 개발자들이 대부분이었다. 그런데 지금은? 백엔드 개발자라면 기본 소양으로 여겨지는 분위기다. 이 변화가 단순한 유행일까? 내 생각엔 아니다. 클라우드 네이티브가 표준이 되면서 MSA와 컨테이너 기술은 선택이 아니라 필수가 되어가고 있다.▲ Kubernetes 대시보드 화면모놀리식 아키텍처의 한계와 MSA의 등장 배경모놀리식 아키텍처, 한마디로 모든 게 하나로 뭉쳐있는 구조다. 처음 프로젝트를 시작할 때는 이.. 2026. 7. 19. 이전 1 ··· 6 7 8 9 10 다음