전체 글 225

3주 차: 알림 기능 찾아 삼만리 Day 10 - 로직 나누기는 마치 원심분리기 같아요. 영혼까지 분리될 뻔했거든요 (2)

[알림 기능 찾아 삼만리 Day 1 링크][알림 기능 찾아 삼만리 Day 2 링크][알림 기능 찾아 삼만리 Day 3 링크][알림 기능 찾아 삼만리 Day 4 링크][알림 기능 찾아 삼만리 Day 5 링크][알림 기능 찾아 삼만리 Day 6 링크][알림 기능 찾아 삼만리 Day 7 링크][알림 기능 찾아 삼만리 Day 8 링크][알림 기능 찾아 삼만리 Day 9 링크] 천만다행으로 준실시간 알림 기능을 구현할 틀을 마련했다. 로직 나누기에 가까스로 성공했다. 알림이란 객체를 만들어서 이메일 전송이나 푸시(Push) 알림 등등 다양한 알림 기능을 구현할 때 활용하고 싶었고, 알림을 읽었는지 또는 언제 읽었는지를 확인할 수 있다면, 나중에 또 의미 있는 정보를 얻을 수 있을 듯했다. 물론 이 알림 객체는 전..

Day 140 - 취하여(취업을 위하여) 프로젝트 42%, 이 상태로 알림 기능 구현 못 하면 어떡하지?

[알림 기능 찾아 삼만리 Day 9][깃허브(GitHub) 링크] '이 상태로 알림 기능 구현 못 하면 어떡하지?' 주말 내내 불안감에 시달려서 아예 마음 놓고 푹 쉬지도, 그렇다고 알림 기능 구현에 별다른 진척을 보이지도 못했다. 사다리 타기를 할 때 왜 알림 기능이 걸리면 좋겠다고 빌었을까. 맨 처음 프로젝트 할 때 기능마다 얼마나 힘든지 빨리 알아볼걸.  이메일 한 개 보내는 데도 일주일이나 걸렸는데 못 하면 어떡해.  다른 팀원이 알림을 맡았으면 실시간 알림까지 진작 구현했겠다. '내일 데일리 스크럼 때 팀한테는 여태껏 뭐 했다고 말해야 하지?'일단 내일은 어떻게든 실시간이든 준실시간이든 알림 기능을 추가로 구현하기를 목표로 잡아야겠다. 이번 주에 중간 발표회 전 팀 안에서 미리 발표회를 진행할 ..

2주 차: 알림 기능 찾아 삼만리 Day 9 - 로직 나누기는 마치 원심분리기 같아요. 영혼까지 분리될 뻔했거든요 (1)

[알림 기능 찾아 삼만리 Day 1 링크][알림 기능 찾아 삼만리 Day 2 링크][알림 기능 찾아 삼만리 Day 3 링크][알림 기능 찾아 삼만리 Day 4 링크][알림 기능 찾아 삼만리 Day 5 링크][알림 기능 찾아 삼만리 Day 6 링크][알림 기능 찾아 삼만리 Day 7 링크][알림 기능 찾아 삼만리 Day 8 링크][깃허브(GitHub) 링크]더보기package com.project.cheerha.domain.notice.entity;import jakarta.persistence.Column;import jakarta.persistence.Entity;import jakarta.persistence.GeneratedValue;import jakarta.persistence.Generatio..

Day 139 - 취하여(취업을 위하여) 프로젝트 41%, 일정을 갈아엎다

[알림 기능 찾아 삼만리 Day 8 링크]  일정을 갈아엎었다. 알림 기능을 어디서부터 어떻게 손대야 할지 막막해서 멍때리다가 구현하고 싶은 대로 냅다 그림을 그렸다. 지금은 이메일 스케줄러(Email Scheduler)에 모든 로직이 담겼는데, 일단 하나씩 분리해 보기로 했다. 알림을 보내는 데 필요한 데이터를 이미 조회하니까, 조회해 온 데이터를 저장해두면 다양한 알림으로 보낼 수 있으니까, 지금 만들어준 로직을 재사용할 수 있지 않을까 싶었다.  이번 주 주말에는 로직을 분리하는 데에만 오롯이 시간을 쏟기로 했다. 원래 일정이 천근만근 돌덩이 같은 압박감으로 느껴져서 아무것도 제대로 해내지 못했다. 새로운 기술을 적용하기 전에 실시간 알림 기능을 우선 구현하고 다시 짜기로 했다. 이렇게 일정을 갈아..

2주 차: 알림 기능 찾아 삼만리 Day 8 - 데이터 조회 따로, 저장 따로, 전송 따로 나누면 어떨까?

[알림 기능 찾아 삼만리 Day 1 링크][알림 기능 찾아 삼만리 Day 2 링크][알림 기능 찾아 삼만리 Day 3 링크][알림 기능 찾아 삼만리 Day 4 링크][알림 기능 찾아 삼만리 Day 5 링크][알림 기능 찾아 삼만리 Day 6 링크][알림 기능 찾아 삼만리 Day 7 링크]현재 구현한 이메일 스케줄러는 다음과 같은 문제가 있었다.  (1) 한 스케줄러가 데이터 조회와 이메일 전송 두 가지를 모두 담당한다.현재 스케줄러는 데이터를 가져오고 그 데이터를 바로 이메일 전송에 활용하는 구조인데, 만약 이메일 전송에 시간이 오래 걸리면 스케줄러가 다시 작동할 때 작업이 서로 겹칠 위험이 있었다. 이 문제는 특히나 이메일을 대량으로 전송해야 할 때 더욱 심각해질 수 있었다. 현재 @Async 어노테이..

Day 138 - 취하여(취업을 위하여) 프로젝트 40%, 와이어프레임(Wireframe) 수정, 프로젝트가 끝나면 뭐 하고 싶으세요?

1. 프로젝트 진행 상황 및 계획 🥇 새로운 기술 없이 실시간 알림 기능 구현하기 (진행 전, 2025.02.23 완료 목표)🥈 이메일 알림 기능 2차 리팩토링(refactoring)하기 (진행 중, 2025.02.23 완료 목표)🥉 실시간 알림 기능 구현 방법 및 각 방법의 장단점 공부하기 (진행 중, 2025.02.23 완료 목표)4️⃣ API 명세서 수정 및 검토하기 (진행 전, 2025.02.23 완료 목표) 5️⃣ 리드미(README) 틀 완성하기 (진행 전, 2025.02.23 완료 목표) 6️⃣ MVP(최소 기능 제품) 버전 테스트 코드 작성하기 (진행 전, 2025.02.23 완료 목표) 2. 와이어프레임(Wireframe)을 수정했다.각자 맡은 기능이 점차 모양새를 갖추고 성능 개선..

2주 차 : 알림 기능 찾아 삼만리 Day 7 - @Async 어노테이션(annotation)으로 바꾼 이유는?

[인용 및 참고 자료]1. 구글 검색: Spring, "Spring ThreadPoolTaskScheduler Docs", ThreadPoolTaskScheduler, (2025.02.21)2. 구글 검색: Spring, "Task Execution and Scheduling", Task Execution and Scheduling, (2025.02.21) [알림 기능 찾아 삼만리 Day 1 링크][알림 기능 찾아 삼만리 Day 2 링크][알림 기능 찾아 삼만리 Day 3 링크][알림 기능 찾아 삼만리 Day 4 링크][알림 기능 찾아 삼만리 Day 5 링크][알림 기능 찾아 삼만리 Day 6 링크][깃허브(GitHub) 링크]처음 ThreadPoolTaskScheduler를 빈(Bean)으로 등록했을 ..

Day 137 - 취하여(취업을 위하여) 프로젝트 36%, 더미 데이터(Dummy Data) 장인이 되어가다

1. 프로젝트 진행 상황 및 계획 🥇 이메일 전송 기능 1차 리팩토링(refactoring)하기 (완료) 🥈 새로운 기술 없이 실시간 알림 기능 구현하기 (진행 전, 2025.02.23 완료 목표)🥉 실시간 알림 기능 구현 방법 및 각 방법의 장단점 공부하기 (진행 중, 2025.02.23 완료 목표)4️⃣ API 명세서 수정 및 검토하기 (진행 전, 2025.02.23 완료 목표) 5️⃣ 리드미(README) 틀 완성하기 (진행 전, 2025.02.23 완료 목표) 6️⃣ MVP(최소 기능 제품) 버전 테스트 코드 작성하기 (진행 전, 2025.02.23 완료 목표) 2. 더미데이터(Dummy Data) 장인이 되어간다.(1) 깃허브(GitHub) 링크(2) 알림 기능 찾아 삼만리 Day 6 링크..

Day 136 - 취하여(취업을 위하여) 프로젝트 32%, 숨 참고 알림으로 딥 다이브(Deep Dive), 수신함 터뜨리기는 덤

1. 프로젝트 진행 상황 및 계획 🥇 이메일 전송 기능 1차 리팩토링(refactoring)하기 (진행 중, 2025.02.20 완료 목표) 🥈 새로운 기술 없이 실시간 알림 기능 구현하기 (진행 전, 2025.02.20 완료 목표)🥉 실시간 알림 기능 구현 방법 및 각 방법의 장단점 공부하기 (진행 중, 2025.02.23 완료 목표)4️⃣ API 명세서 수정 및 검토하기 (진행 전, 2025.02.23 완료 목표) 5️⃣ 리드미(README) 틀 완성하기 (진행 전, 2025.02.23 완료 목표) 6️⃣ MVP(최소 기능 제품) 버전 테스트 코드 작성하기 (진행 전, 2025.02.23 완료 목표) 2. 수신함을 터뜨렸다. (1) 깃허브 브랜치 링크(2) 알림 기능 찾아 삼만리 Day 5 링크..

2주 차: 알림 기능 찾아 삼만리 Day 5 - 이메일 하나 보내는 데 7초씩이나 걸리면, 2,000명일 때는 얼마나 걸린단 소리지?

[인용 및 참고 자료]1. 구글 검색: 티스토리, "java.lang.Object org.hibernate.ScrollableResults.get(int)", 오류 해결하기, (2025.02.19)2. 구글 검색: 티스토리, "java.lang.Object org.hibernate.ScrollableResults.get(int)", 오류 해결하기, (2025.02.19)3. 구글 검색: QueryDSL GitHub, "java.lang.Object org.hibernate.ScrollableResults.get(int)", 오류 해결하기, (2025.02.19)4. 구글 검색: 정책 브리핑, "한국 실업자 수", 2024년 12월 및 연간 고용동향, (2025.02.19) [알림 기능 찾아 삼만리 Day..