블루-그린 무중단 배포에서 Downtime을 측정해보자
·
💻 개발
1. 개요이전에 "프리티어에서 블루-그린 무중단 배포를 해보자"라는 주제로 글을 작성했었는데요. 그 글의 결론 부분에서 Nginx가 Reload될 때 약 0.1초의 다운타임이 존재한다고 언급했습니다. 2025.03.16 - [💻 개발] - 프리티어에서 블루-그린 무중단 배포를 해보자 하지만 제가 이 수치를 어떻게 도출했는지 명확하게 설명하지 않았더라고요. 이번 글에서는 JMeter를 사용하여 실제로 Nginx Reload 시 발생하는 다운타임을 어떻게 측정했는지, 그리고 그 결과는 어떻게 나왔는지 분석해봤습니다. JMeter란?JMeter는 Apache 재단에서 개발한 오픈 소스 테스트 도구입니다. 웹 애플리케이션의 성능을 테스트하고 분석하는 데 자주 사용되며, "부하 테스트를 한다!" 라고 했을 때 ..
글또 10기를 마치면서 쓰는 회고
·
🤔 회고
1. 서론작년 10월부터 시작된 글또(글 쓰는 또라이가 세상을 바꾼다)를 진행하면서 어느새 마지막 글 제출이 다가왔다. 꾸준히 블로그 글을 쓰고, 누군가 쓴 글을 읽고, 누군가의 고민/정보/응원을 읽으면서 참 인간적인 커뮤니티였다. 이게 마지막이라니... 아쉽지만 그래도 슬랙은 계속 유지될 것이니 나는 영원히 활동할거다. 정말로!!2. 글또를 시작할 때 정한 목표10기를 지원할 때 작성했던 설문을 한번 봤다.1) 블로그 작성에 어느정도의 강제성 부여블로그 글을 꾸준히 써야겠다는 생각은 항상 해왔지만 그런 습관을 가지는건 정말 쉽지 않았다. 몇번 꾸준히 쓰다가도 몇달동안 방치하기도 하면서 습관이 형성되지는 않았는데, 이번 글또를 통해서 2주에 한번씩은 꼭 블로그를 쓰자는 생각을 했다.2) 글을 피드백받으며..
프리티어에서 블루-그린 무중단 배포를 해보자
·
💻 개발
1. 개요 꾸준히 기능을 개발하고, 발전시켜나가는 코지메이트 프로젝트에서는 요일별로 반복되는 투두(할 일 목록)를 자동으로 추가하는 기능이 있습니다. 그런데 어느 날 투두가 추가되지 않는 문제가 발생했다는 것을 알았습니다. 이 기능은 사용자들이 반복해야하는 투두 생성을 줄이고자 만든 기능이었기 때문에, 어떤 상황에서든지 문제가 발생하면 정말 안되는 중요한 기능이었는데요. 원인을 분석해보니, CI/CD 자동 배포 중 서버가 재시작되면서 해당 시간에 실행되었어야 할 Cron Job이 실행되지 않았던 것이었습니다. 이를 해결하기 위해 무중단 배포를 구현하여 CI/CD 과정에서도 서버가 정상적으로 동작하도록 했습니다. 무중단 배포 방식은 여러가지 종류가 있는데요. 저는 그 중 가장 쉽게 구현이 가능하다고 생각한..
25년을 시작하는 겨울의 회고
·
🤔 회고
1월과 2월의 회고블로그 글을 써보면서 기술에 대한 내용을 적는것도 좋지만, 어느정도 내가 살아온 시간에 대한 정리와 성찰, 반성을 해야 할 필요성을 느끼고 있어요. 자주는 아니더라도 변화가 생기는 시기에 맞추어서 이전 시기에 어떤 활동을 했는지에 대해 정리하고자 합니다. 이번 회고는 25년을 시작한 이후부터 개강하기 전 지금까지의 일을 정리합니다.1. 유럽 여행25년 한 해의 시작을 포르투갈에서 맞이했습니다. 사실 크리스마스부터 있긴 했는데요. 외국에서 새해를 맞이하다니... 정말 색다르고 재미있는 경험이었습니다. 저는 유럽 여행 자체가 처음이어서 그것만으로도 좋았는데, 외국에서 새해 카운트다운을 한 것도 처음이었고, 심지어 카운트다운을 밖에서 즐긴 것도 처음이어서 그 어느 새해보다 가장 좋았던 한해였..
AWS CLF 자격증 취득 후기 및 공부방법
·
🤔 회고
1. 시험을 보게 된 계기AWS 대학생 연합동아리인 ACC(AWS Cloud Club)에서 활동하던 중 AWS 자격증 바우처를 지원해준다는 소식을 접하고 바로 신청을 해서 무료로 시험을 봤습니다!CLF(AWS Certified Cloud Practitioner) 또는 SAA(AWS Certified Solutions Architect - Associate) 중 선택할 수 있었는데, SAA는 CLF를 먼저 취득해야 응시 가능하다고 해서 아쉽지만 CLF를 따기로 결정했어요.올해 안에 SAA도 따려고 계획을 세우고 있는데, 바우처 지원이 한번 더 있기를 바라는 중입니다! 저는 우선 AWS를 아예 모르는 사람은 아니었고, 어느정도 몇개는 사용해본 사람입니다.AWS 서비스를 어느 정도 사용해 봤고, 컴퓨팅 머신,..
FastAPI 프로젝트에 Ruff 포맷팅을 적용해보자
·
💻 개발
1. 하려는 것 저는 현재 티끌이라는 프로젝트에 서버 파트를 맡아서 진행하고 있습니다. Lambda 환경에서 FastAPI를 이용해 프로젝트를 진행하고 있는데, 좀 특이하지만 그래도 새로운 것을 접하고 익숙해지면서 재미있게 개발을 하고 있습니다. 개발을 진행하면서 이번에는 코드 스타일 통일에 대해서 고민하게 되었습니다. 저는 현재 혼자서 서버 개발을 모두 하고 있기 때문에 우선순위에서는 좀 떨어졌는데, 원래 협업 과정에서는 최우선으로 두고 진행해야하는 사안이긴 합니다. 물론 혼자 개발하더라도 가독성이나 일관성 측면에서 보면 사용하는데 훨씬 좋은게 코드 스타일을 정해두는 것이긴 하죠. 원래는 Pycharm에서 기본 제공하는 포매팅 기능을 사용했었는데요. 개발 과정에서 자꾸 거슬리는 부분이 패키지를 추가/삭..
Spring Boot에서 DB에 초기 데이터를 넣어보자
·
💻 개발
1. 하려는 것프로젝트를 계속 진행하다보면서, DB를 종종 초기화하게 되는데요. (아직 배포를 하지 않았기 때문이지만...) 개발하면서 엔티티 구조가 계속 바뀌다보니, 사라진 컬럼의 제약조건으로 인해서 배포 서버에서 문제가 발생하는 경우가 생겼습니다. 지금이야 아직 배포를 하지 않았기 때문에 밀어도 큰 타격은 없지만, 이 문제도 좀 해결을 해야할 것 같은 느낌이 듭니다.아무튼 이번에는 DB를 초기화하고난 뒤 항상 초기 데이터를 테이블에 넣다보니, 이런 수고를 덜고자 자동으로 SQL을 실행하도록 설정을 해보았습니다.2. 어떤 데이터를 초기에 넣어야 할까?초기에 넣어야 할법한 데이터들을 다음과 같습니다.관리자 데이터: 사용자가 직접 가입을 통해서 데이터를 추가를 한다고 해서, 관리자도 가입을 통해 등록되는건..
@OneToOne 연관에서 발생한 N+1 문제를 해결하자
·
💻 개발
이번에는 N+1 문제를 가져왔습니다.1. 하려는 것이전에 프로젝트(코지메이트)에서 Sentry의 기능을 써보면서 모든 Query를 추적하게 했는데요. 적용을 하자마자 효과를 보고 있습니다.2일도 지나지 않아서 서버 내에서의 쿼리로 인한 문제를 찾아냈기 때문이죠. (추가하길 잘했네요!) 자고 일어난 저는 에러 알림을 걸어둔 디스코드에서 다음의 에러를 보게 됩니다.이렇게 알림까지 보내준 이상 가만둘 수 없죠. 분석하고 해결까지 해봤답니다. 참고) Sentry 로그Sentry에서 확인할 수 있는 로그입니다. 어떤 쿼리가 발생했고, 어떻게 N+1이 발생했는지 확인할 수 있습니다. 자세히 보면 한군데에서 발생한게 아니라, 두 군데인것을 대충 알 수 있답니다....ㅎ 쿼리에 대해 이제라도 열심히 관심을 가져보도록 ..
Spring Boot에서 Sentry가 쿼리를 추적하게 해보자
·
💻 개발
1. 하려는 것현재 진행중인 프로젝트(코지메이트)는 스프링 부트를 사용해서 개발중이고 배포를 기다리는 중입니다.기능 개발은 배포를 진행중이니 필요한 기능들은 모두 완료되어있고, 이제는 자잘한 리팩토링과 성능 최적화, 로깅, 보안, 확장성, 안정성 등 실제 운영 환경에서 중요하게 고려해야하는 부분을 보완해야할 시점입니다. 이 중에서 현재 저는 로깅에 관련하여 구체화를 진행하고 있습니다.지금까지 로깅을 위해 로그 메시지를 커스텀해서 필요한 정보를 출력하도록 하는 설정을 했고, 에러가 발생했을 때에는 Sentry를 사용해서 개발자들에게 알림을 줄 수 있도록 구성해두었습니다. 이번에는 Sentry의 기능 중 하나인 Performance 통계에서 Query 응답속도를 수집할 수 있도록 설정해보고자 합니다.2. 필..