Home
Justnote
Cancel

시대팅5 매칭 API 개선 과정: 대규모 트래픽 대응 전략

배경 이번 시즌은 매칭 신청 기간 동안 1:1과 3:3 미팅에 대해 참가 신청을 받은 뒤, 매칭 알고리즘으로 매칭한 결과를 주말동안 공개하는 방식으로 운영하였다. 특히 매칭 결과 조회는 발표 당일 대규모 트래픽이 몰릴 것으로 예상되었고, 이를 효율적으로 처리하기 위해 API를 지...

시대팅5 이메일 전송 횟수 초기화용 관리자 API 구현기

배경 인증 횟수 초기화 요청 이메일 인증 시스템에서는 악의적인 사용자를 막기 위해 일일 인증 횟수를 5회로 제한하고 있다. 하지만 이러한 제한은 정상적인 사용자에게도 영향을 미칠 수 있기에 필요한 경우 CS팀이 사용자의 인증 횟수를 초기화할 수 있는 기능이 필요했다. 처음에는 DataGrip이나 Redis CLI 등을 사용해 Redis 데이터에...

Refresh Token Rotation으로 JWT 보안 강화하기

배경 출처: https://auth0.com/blog/refresh-tokens-what-are-they-and-when-to-use-them JWT 인증 기능을 개발할 당시에는 토큰 재발급시 액세스 토큰만 재발급하도록 구현했었다. 시대팅의 운영 기간은 짧았기 때문에 리프레시 토큰의 유효 기간을 7일로 설정하고, 재발급 없이 액세스 토큰만 갱신하...

시대팅5 JWT 인증 시스템 구축하기

배경 잦은 에러로 인해 사용할 수 없었던 어카운트 서버 기존 시대생의 서비스들은 정보기술관 온프레미스(On-premise) 환경의 어카운트 서버를 사용하여 인증을 처리했다. 하지만 이 서버는 알 수 없는 이유로 간헐적인 장애가 발생했고, 이로 인해 시대생 앱에서 사용자들의 로그인이 예기치 않게 풀리는 등 사용자 경험을 저하시키는 문제가 빈번하게 ...

비동기 처리를 통해 이메일 전송 API의 성능 개선하기

배경 기존 API 호출 시간 기존 이메일 인증 기능에서는 동기 처리 방식으로 인해 응답 시간이 길어지는 문제가 있었다. 이로 인해 사용자 경험이 저하되고 서버의 부담이 가중될 우려가 있었다. Amazon SES를 사용하여 인증 이메일을 전송하는 동안 API 요청이 차단되었고, 인증 코드 생성 및 Redis 저장 작업도 동기적으로 처리되어 전반적인...

시대팅5 이메일 인증 기능 구현하기 with Amazon SES

이 글에서는 시대팅을 개발하며 AWS SDK를 이용한 Amazon SES 이메일 발송, Redis를 이용한 인증코드 관리, 사용량 제한 등의 이메일 인증 기능을 구현한 과정을 다룬다. 배경 기존 시대생 앱에서는 어카운트 서버를 사용한 포털 인증으로 유저가 재학생임을 확인하였다....

시대팅 시즌5 개발을 마치며

배경 시대팅은 서울시립대학교 IT 동아리인 시대생에서 재학생들을 대상으로 운영하는 소개팅 서비스다. 매 학기 이벤트성으로 열리는 이 서비스는 동아리 운영비 확보와 앱 사용자 유치를 목적으로 한다. 이번 시대팅 시즌5 프로젝트는 내가 속한 TF에서 기존에 개발중이던 맛집 혼잡도 서비스가 의견 충돌로 무산된 후, 새로운 방향성을 모색하던 과정에서 채...

Google Maps API

개요 구글 맵스(google maps) API는 다양한 지도와 지리위치 기능을 개발자들이 자신들의 애플리케이션이나 웹사이트, 서비스 등에 적용하도록 구글에서 제공하는 웹서비스와 도구들을 일컫는다. 주요 기능 Mapping Services 상호작용이 가능한 지도 Geocoding 주소나...

SOLID : 객체 지향 설계의 5원칙

개요 최근 몇 주간 42에서 C++을 사용하여 웹서버를 개발하는 과제를 하고 있다. 오랫동안 C만을 사용해 온 나에게 C++의 객체 지향 프로그래밍은 생소한 개념이었다. 그렇기에 객체 지향 설계를 고려하지 않고 코드를 작성하였고, 그 결과로 각각의 클래스가 너무 많은 역할을 지닌 코드가 생겨났다. 이 코드는 난잡하여 이해하기도 힘들었고, 코드의 한 ...

[C++] malloc으로 할당한 메모리를 delete로 해제해도 될까?

개요 C++은 로우 레벨의 메모리 관리와 하이 레벨의 추상화를 모두 지원하는 언어이다. C++의 주요 기능 중 하나인 메모리의 동적 할당, 해제는 new, delete 키워드를 통해 이루어진다. 이 연산자들은 생성자와 소멸자가 있는 객체를 사용하도록 설계되었으며 데이터 맞춤과 예외의 안전성을 처리한다. 반면 C는 생성자, 소멸자와 예외가 없는 로우...