Nginx에 SSL 적용 및 Reverse Proxy 설정애플리케이션에 SSL 인증서를 직접 적용하는 대신 Nginx에 SSL을 설정하면, Nginx 뒤의 모든 애플리케이션에 SSL이 적용되어 매우 유용합니다. 본 문서에서는 Nginx에 SSL을 설정하고 Reverse Proxy를 구성하는 방법을 설명합니다.환경운영 체제: Ubuntu 18 이상Reverse Proxy 대상 포트:3000 (Frontend)8080 (AI 서비스)8081 (Backend)1. SSL 인증서 파일 준비SSL 인증서를 SSL For Free 등을 통해 발급받은 경우, 다음과 같은 3개의 파일이 제공됩니다:certificate.crtprivate.keyca_bundle.crt이 파일들을 /etc/nginx/ssl 디렉토리로 복..
최근 서비스에서 이메일 발송 중 421 오류가 발생하는 상황이 있었다. 이 오류는 서버 과부하나 요청 제한 초과 시 나타날 수 있으며, Gmail API의 특성상 구체적인 원인 파악이 어려웠다. 오류가 발생할 때마다 15초 간격으로 최대 세 번까지 재시도하도록 설정했지만, 문제가 해결되지 않아 다른 접근 방식을 고민했다. 문득 컴퓨터 네트워크 전공 수업에서 배운 패킷 손실 및 혼잡 제어 개념을 떠올려보았다. 네트워크 상에서 패킷이 라우터를 거쳐 전달될 때 혼잡이나 과부하로 인해 특정 라우터에서 패킷이 정체되거나 소실될 수 있다. 이를 해결하기 위해 혼잡 제어 알고리즘에서는 패킷 전송 간격을 점진적으로 늘리는 방식을 사용해 부하를 완화시키곤 하였다. 이와 같은 원리를 이메일 발송 재시도 로직에 적용하여 지..
갑자기 1주일 넘게 잘 운영되던 메일 서비스가 오류가 발생했다. ㅜㅜ오류는 다음과 같이 gmail smtp 서버에서 421 error를 던져준 것이다. 정확히는 421-4.3.0이라는 에러인데 google support page에서 해당 정보를 찾을 수 있었다.일시적인 시스템 장애가 발생했다는 뜻인데 좀 더 자세히 알아보고자 링크를 타고 더 들어가 보았다. 아마 수신서버에서 같은 곳에서 한 번에 많은 양의 메일을 수신하여 생기는 문제 같다.현재 내 서비스 로직은 1개의 메일을 보내다가 421 에러를 마주치면 후속 작업들이 전부 끝나게 되므로 치명적이다.오늘도 대략 뒤에 10명 정도가 받지 못하여 뒤에 10명만 따로 보내는 작업을 해줬다. 참고로 에러가 발생하는지 매일 확인하는 것은 아니고 내가 제일 마지..
오늘은 메인페이지와 구독페이지에 현재 구독자 수를 표기하는 작업을 하였다.또한 구독자 수가 500명이 넘어가면 구독이 안되도록 수정하였고 UI로 알려주는 작업을 하였다! 아직 500명이 되기는 멀었지만 언젠가는 되리라 믿으며 내가 건들지 않아도 서비스가 정상적으로 흘러갈 수 있도록 미리 조치를 취한것이다..! 이런식으로 현재 구독자 수를 표시하였고 만약 500명이 된다면 구독 신청버튼이 보이지 않게 만들었다! 예를들면 이렇다 하지만 페이지를 넘어가는것을 따로 막지는 않았기때문에 URL로 바로 들어갈 수 있다. 하지만 그 경우도 고려하여 아래와 같이 막아놓았다. 끝!
오늘은 구독, 구독취소 기능에서 사용자가 불편? 하게 생각하는 부분들을 개선한 얘기를 해보려 한다. 서버 로그를 보면 항상 인증요청 메일이 2번 오거나 인증확인 버튼을 두번이상 누르는 로그가 보였다. 큰 상관은 없었지만 인증메일 발송 비용을 최소화 하기 위해서는 수정을 해야했다. 하단에 "구독 취소 요청 중입니다. 메일을 확인해주세요." 라는 문구가 뜨게 하였지만 실수로 한번 더누르거나 성격이 급한 한국인들은 그새 버튼을 또 누르는 듯 하다. 그래서 아래와 같이 메일을 전송중일 경우에는 버튼을 못누르게 막아놓았다. 방법은 간단하다. fetch 요청을 날리는 초기에 비활성화를 해놓고 finally 부분에 다시 활성화를 시키면된다. api가 동기적으로 호출되므로 모든 요청이 끝나면 활성화가 된다.
오늘은 저번에 썻던 스레드 관련 글에 이어서 실제로 스레드 개수를 늘려나가며 테스트 하였던 과정을 소개하려고 한다!2024.11.13 - [notice-crawler] - [교내 공지사항 알림 서비스] 개발일기 6편 [스레드를 이용한 성능 최적화] [교내 공지사항 알림 서비스] 개발일기 6편 [스레드를 이용한 성능 최적화]오늘은 기존 이메일 발송시간이 너무 오래 걸리는 문제를 해결하는 과정을 기록하도록 하겠다. 기존 코드에서는 30명의 사용자에게 메일을 보내는데 1분 30초정도가 걸렸다. (49:24 ~ 50:55) 메일mythpoy.tistory.com 원래 Mockito 라이브러리를 통해 EmailService를 가짜 객체로 생성하여 테스트를 하고있었는데 실제 네트워크 I/O도 고려해야 했기 때문에 ..