프로그래밍

프로그래밍

[Spring] TaskScheduler를 활용해 런타임에 동적으로 작업 예약하기

들어가며대학 축제 티켓팅 서비스 ‘페스타고’에서 입장 안내 푸시알림을 보내는 기능을 개발하게 되었다.10분 후 입장 가능한 티켓을 소유한 사용자들에게 ‘잠시 후 입장 가능합니다’라는 내용의 푸시알림을 전송하는 기능이다.여기서 주목할 점은 특정 시간(ex. 자정)이 아닌, 티켓 별로 상이한 입장 시간에 따라 푸시알림을 전송해야 한다.이 기능을 개발하는 과정을 이번 글에서 공유하고자 한다. 고려한 방법들푸시알림을 특정 시간에 전송하기 위해 여러 가지 방법들을 고려하였다.1. Firebase의 함수 예약 기능 활용Firebase는 특정 시간에 함수를 실행하도록 예약하는 기능을 제공한다. 함수 예약  |  Cloud Functions for FirebaseGoogle I/O 2023에서 Firebase의 주요 ..

프로그래밍

Spring Event란?

‘페스타고’에서 모바일 티켓의 상태를 실시간으로 변화시켜 주기 위해 FCM을 연동했다. 스태프 폰에서 티켓을 스캔 완료한 후, 학생 폰에 FCM을 전송하면 화면에 표시되는 QR코드를 비활성화처리한다. 이때, FCM 보내는 과정을 Spring Event를 활용해 처리했는데, 코드 리뷰를 진행하며 내가 @TransactionalEventListener와 @EventListener의 차이를 정확히 모른다는 사실을 깨달았다. 이번 기회에 Spring Event의 개념을 정리하고 넘어가 보고자 한다. 이벤트(Event)란? 이벤트는 특정 트리거나 조건이 충족되었을 때 시작되는 동작 혹은 사건이다. 이벤트 발행은 이벤트를 발생시키는 과정으로, 발행자(publisher)가 이벤트를 발행하면, 이를 구독하고 있던 구독..

프로그래밍

[Java] synchronized란?

Java에서 다중 스레드 환경에서 공유 데이터에 대한 안전한 접근을 하는 방법, 즉 스레드 간 동기화 방식들에 대해 알아보고자 한다. 이번엔 대표적 예시인 synchronized 키워드에 대해 공부해보자. Java에서의 스레드 개념은 아래 포스팅을 참고하도록 하자. [Java] Thread란? 요즘 ‘페스타고’에서 동시성 문제를 해결하며 스레드에 대한 관심이 커졌다. 자바에서 동시에 여러 작업을 수행하기 위해 사용되는 스레드(Thread)에 대해 알아보자. 프로세스와 스레드 프로세 xxeol.tistory.com synchronized 키워드 synchronized 키워드를 사용해 메서드 또는 코드 블록을 임계 영역(critical section)으로 지정할 수 있다. 이렇게 지정된 영역은 스레드 간 공..

프로그래밍

[Java] Thread란?

요즘 ‘페스타고’에서 동시성 문제를 해결하며 병렬 프로그래밍에 대한 관심이 커졌다. 자바에서 동시에 여러 작업을 수행하기 위해 사용되는 스레드(Thread)에 대해 알아보자. 프로세스와 스레드 운영체제가 없던 시절, 컴퓨터는 한 번에 프로그램 하나만 실행했다. 그리고 해당 프로그램은 컴퓨터 내 모든 자원을 직접 접근할 수 있었다. 운영체제가 등장하고, 여러 개의 프로그램을 각자의 프로세스 내에서 동시에 실행할 수 있게 되었다. 프로세스(process)는 각자가 서로 격리된 채로 독립적으로 실행하는 프로그램으로, 운영체제는 프로세스마다 메모리, 파일 핸들, 보안 권한 등의 자원을 할당한다. 프로세스의 등장으로 자원 활용, 공정성, 편의성을 얻을 수 있었다. 스레드의 등장으로, 한 프로세스 안에 여러 개의 ..

도둑탈을 쓴 애쉬
'프로그래밍' 카테고리의 글 목록 (2 Page)