오픈미션 주제 선정 배경 : 이메일 발송 스케줄러
오픈 미션 설명회가 끝난 후, 어떤 주제로 과제를 진행할지 정말 많이 고민했다.
그 이유는 바로 “미션 주제는 자유롭게 정한다.” 라는 말 때문이었다 🥲
코드리뷰를 하면서도 머릿속은 계속 “뭘 하지?”하며 틈틈히 고민했었다.
그래서 나름 여러 가지 주제를 떠올려봤다.
Kotlin으로 3주차 과제를 구현하고, 프론트엔드와 연동해 작은 로또 웹사이트 만들기
➔ 한 번도 써본 적 없는 언어이지만,Java를 해봤다면 금방 배울 수 있다고 들어서 도전해보고 싶었다.- 디스코드에서 협업할 사람 2~3명을 모아 완성도 있는 프로젝트 진행하기
➔ 협업 과정 속에서 마찰이나 의견 조율을 경험해보고 싶었다. - 평소 관심 있던 주제를 정해, 정답이 없는 문제를 정의하고 직접 해결해보기
이렇게 고민을 이어가던 중, 계속 마음이 끌렸던 주제가 있었다.
그건 바로 뉴스레터 동작 방식이었다.
주제 선정 계기
대학교 시절, 블로그 이웃분께서 추천해준 뉴스레터를 계기로 뉴스레터 구독을 시작했다.
그 뒤로 내용이 알차고 재밌어서 이것저것 구독하다 보니, 지금은 무려 16개의 뉴스레터를 구독 중이다.
메일함에 매일 도착하는 뉴스레터를 보며 문득 이런 생각이 들었다.
“어떻게 정해진 날짜와 시각에 정확히 도착할까?”
“수많은 구독자에게 어떻게 동시에 메일을 보낼 수 있을까?”
특히 ‘매일메일’ 서비스를 보면서는 아래와 같은 궁금증이 생겼다.
“구독자마다 언제 구독했는지에 따라 다른 기술 면접 질문을 보내주는 건데, 이건 어떤 구조로 작동하는 걸까?”
즉, 메일이 어떻게 매일, 정확한 시간에 도착할 수 있을까?
이 의문이 머릿속에 계속 맴돌았다.
그래서 관련 자료를 찾아보다가 Spring boot의 @Scheduled 기능과 RabbitMQ를 알게 되었고,
그 순간 ‘아, 이거다!’라는 생각이 들었다.
그 이후로는 다른 주제는 눈에 들어오지 않았다.
구체화하기
“나는 오픈미션을 통해 무엇을 가장 얻어가고 싶은가?”
이 질문을 스스로에게 던졌다.
그리고 그 답은 생각보다 단순했다.
| 정답이 없는 문제를 스스로 정의하고, 부딪히며 해결해보기. |
처음부터 완벽히 아는 상태에서 시작할 순 없지만,
모르면 배우고, 막히면 해결해보며 끝까지 해내는 경험을 해보고 싶었다.
솔직히 두렵기도 했지만, “내가 해낼 수도 있잖아?”라는 생각이 점점 더 강해졌다.
그때부터 노션을 열어 하나씩 계획을 세워가기 시작했다.
대략적인 계획
진행하면서 새로운 궁금증이 생길 수도 있고, 계획이 달라질 수도 있겠지만
일단은 하고 싶은 것 중심으로 대략적인 방향을 정해보았다.
1주차 : 기초 기술 학습
- 프로젝트 환경 구성
@Scheduled기반 스케줄러 동작 원리 이해RabbitMQ개념 학습Pub / Sub구조 실습
2주차 : 이메일 발송 서비스 구현
- 이메일 발송 스케줄러 구조 설계
- 대량 구독자 대상 이메일 발송 기능 구현
- 성능 테스트 및 개선
- 동시 구독 처리 로직 고민 및 적용
3주차 : 회고 및 정리
- 프로젝트 진행 중 블로그 글로 과정 기록하기
- 최종 소감문 작성
- 미흡했던 부분 리팩토링
블로그에 과정을 그때마다 기록해두면, 나중에 소감문 작성 시간도 절약할 수 있을 것 같았다.
또한 남은 시간엔 부족했던 부분을 다듬거나 개선 작업을 하고자 한다.
마지막으로
이번 오픈 미션을 통해 “생각만 했던 걸, 실제로 해볼 수 있다.”는 걸 느끼고 싶다.
무엇보다 내가 흥미를 느끼는 주제로 진행하는 만큼
끝까지 즐겁게 몰입할 수 있을 것 같다.
사실 정해진 과제를 하는 게 더 편할 수도 있다.
왜냐하면 이미 방향이 정해져 있으니까.
하지만 이번엔 완전히 내가 정한 주제로 직접 계획을 세우고 구현해야 한다는 점이 오히려 매력적으로 다가왔다.
이 오픈 미션은 내게 “도전할 명분”을 만들어주었다.
그래서 이번 기회에 정말 많이 배우고, 부딪히고, 성장하고 싶다.
끝났을 때 결과가 어떨지는 모르지만,
그래도 나는 끝까지 해봤다. 라는 뿌듯함을 꼭 느끼고 싶다.

