배경 이번 시즌은 매칭 신청 기간 동안 1:1과 3:3 미팅에 대해 참가 신청을 받은 뒤, 매칭 알고리즘으로 매칭한 결과를 주말동안 공개하는 방식으로 운영하였다. 특히 매칭 결과 조회는 발표 당일 대규모 트래픽이 몰릴 것으로 예상되었고, 이를 효율적으로 처리하기 위해 API를 지...
배경 인증 횟수 초기화 요청 이메일 인증 시스템에서는 악의적인 사용자를 막기 위해 일일 인증 횟수를 5회로 제한하고 있다. 하지만 이러한 제한은 정상적인 사용자에게도 영향을 미칠 수 있기에 필요한 경우 CS팀이 사용자의 인증 횟수를 초기화할 수 있는 기능이 필요했다. 처음에는 DataGrip이나 Redis CLI 등을 사용해 Redis 데이터에...
배경 출처: https://auth0.com/blog/refresh-tokens-what-are-they-and-when-to-use-them JWT 인증 기능을 개발할 당시에는 토큰 재발급시 액세스 토큰만 재발급하도록 구현했었다. 시대팅의 운영 기간은 짧았기 때문에 리프레시 토큰의 유효 기간을 7일로 설정하고, 재발급 없이 액세스 토큰만 갱신하...
배경 잦은 에러로 인해 사용할 수 없었던 어카운트 서버 기존 시대생의 서비스들은 정보기술관 온프레미스(On-premise) 환경의 어카운트 서버를 사용하여 인증을 처리했다. 하지만 이 서버는 알 수 없는 이유로 간헐적인 장애가 발생했고, 이로 인해 시대생 앱에서 사용자들의 로그인이 예기치 않게 풀리는 등 사용자 경험을 저하시키는 문제가 빈번하게 ...
배경 기존 API 호출 시간 기존 이메일 인증 기능에서는 동기 처리 방식으로 인해 응답 시간이 길어지는 문제가 있었다. 이로 인해 사용자 경험이 저하되고 서버의 부담이 가중될 우려가 있었다. Amazon SES를 사용하여 인증 이메일을 전송하는 동안 API 요청이 차단되었고, 인증 코드 생성 및 Redis 저장 작업도 동기적으로 처리되어 전반적인...
이 글에서는 시대팅을 개발하며 AWS SDK를 이용한 Amazon SES 이메일 발송, Redis를 이용한 인증코드 관리, 사용량 제한 등의 이메일 인증 기능을 구현한 과정을 다룬다. 배경 기존 시대생 앱에서는 어카운트 서버를 사용한 포털 인증으로 유저가 재학생임을 확인하였다....
배경 시대팅은 서울시립대학교 IT 동아리인 시대생에서 재학생들을 대상으로 운영하는 소개팅 서비스다. 매 학기 이벤트성으로 열리는 이 서비스는 동아리 운영비 확보와 앱 사용자 유치를 목적으로 한다. 이번 시대팅 시즌5 프로젝트는 내가 속한 TF에서 기존에 개발중이던 맛집 혼잡도 서비스가 의견 충돌로 무산된 후, 새로운 방향성을 모색하던 과정에서 채...
개요 구글 맵스(google maps) API는 다양한 지도와 지리위치 기능을 개발자들이 자신들의 애플리케이션이나 웹사이트, 서비스 등에 적용하도록 구글에서 제공하는 웹서비스와 도구들을 일컫는다. 주요 기능 Mapping Services 상호작용이 가능한 지도 Geocoding 주소나...
개요 최근 몇 주간 42에서 C++을 사용하여 웹서버를 개발하는 과제를 하고 있다. 오랫동안 C만을 사용해 온 나에게 C++의 객체 지향 프로그래밍은 생소한 개념이었다. 그렇기에 객체 지향 설계를 고려하지 않고 코드를 작성하였고, 그 결과로 각각의 클래스가 너무 많은 역할을 지닌 코드가 생겨났다. 이 코드는 난잡하여 이해하기도 힘들었고, 코드의 한 ...
개요 C++은 로우 레벨의 메모리 관리와 하이 레벨의 추상화를 모두 지원하는 언어이다. C++의 주요 기능 중 하나인 메모리의 동적 할당, 해제는 new, delete 키워드를 통해 이루어진다. 이 연산자들은 생성자와 소멸자가 있는 객체를 사용하도록 설계되었으며 데이터 맞춤과 예외의 안전성을 처리한다. 반면 C는 생성자, 소멸자와 예외가 없는 로우...