개요 본 글에서는 Spring Boot와 Android Studio를 사용하여 서버에서 안드로이드 스마트폰으로 알림을 전송하는 간단한 웹 어플리케이션을 만들어 본다. 글을 쓰게 된 계기 서버를 만들다 보면 웹 뿐만 아니라 앱에 알림을 보내는 기능을 만들어보고 싶은 때가 있다. FCM은 Android와 IOS에 통합적으로 알림을 보낼 수 있는 서비스를 제공하므로 FCM을 이용하면 간편하게 알림을 보낼 수 있다. 문제는 Firebase는 입문하는 과정에서 정보를 얻기가 참 어렵다는 점이다. 공문서를 뒤져봐도 공문서 내용의 Android 버전이 예전 버전인 경우가 많아 바로 적용하기 어려운 부분이 있었다. 결국 알림을 원하는 대로 전송할 수 있었지만, 정보를 찾기 어려워서 상당한 시간을 소요한 것에 아쉬움이 ..
서론 메시지 큐를 사용하는 용도는 다양하다. 외부 서비스에 특정 정보나 상태 변경을 알리기 위해 비동기적으로 알림을 보내야 할 때 또는 MSA에서 각각의 서비스 정보 교환이 이뤄질 때 각 서비스의 의존성을 낮추는 느슨한 결합을 구현하기 위해 종종 사용한다. 수많은 Kafka, RabbitMQ 등 많은 메시지 큐 서비스가 있지만, 여기선 AWS의 SQS를 사용하여 비동기 메시징을 구현했다. SQS 역시 메시지 큐의 일종으로 어플리케이션 코드를 통해 해당 큐에 메세지를 보내거나 메세지를 받아올 수 있다. 아래 본문에서는 SQS를 Spring으로 사용하는 법을 설명한다. AWS 콘솔에서 SQS 사용 준비하기 IAM 액세스키 발급 IAM을 통해 SQS를 사용할 사용자 계정을 생성하고 해당 계정의 보안 자격 증명..
Spring interceptor란 spring의 controller는 각 사용자가 해당 url 경로로 접속 했을 때 각 경로에 맞는 서비스 로직을 매칭해주는 첫번째 관문이다. @RestController @RequestMapping("/customer/{foodKind}/store") public class StoreController { private final MemberService memberService; private final StoreService storeService; public StoreController(MemberService memberService, StoreService storeService) { this.memberService = memberService; this...
서론 배달 어플리케이션 제작 중에 소비자의 위치 근처에 있는 음식점만 보여줘야 하는 기능이 필요했다. 이를 구현하기 위해 특정한 알고리즘을 Service layer에서 구현할 수도 있었으나, 개발 소요 시간을 줄이기 위해 MongoDB에서 제공하는 Geo-Spatial query를 활용하기로 했다. Geo-Spatial query는 특정 위치 조건에 해당하는 데이터만 가져오도록 해주는 MongoDB에서 제공하는 기능이다. Geo-spatial query에는 현재 크게 네 가지의 쿼리가 제공되고 있다. $geoIntersects 주어진 geometry 공간과 교차하는 geometry 영역의 데이터를 반환해주는 쿼리. $geometry 쿼리를 함께 써줘야 한다. 조금이라도 교차하는 polygon이 있다면 모..
서론 프로젝트에서 DynamoDB에 연결하여 데이터 저장할 일이 있었다. DynamoDB CRUD의 Example을 검색했으나, DynamoDBMapper를 사용하여 데이터를 기록하거나, Spring Data dynamoDB를 사용하더라도 local DynamoDB에 연결하여 local에 기록하는 예시들이 대부분이었다. 즉, AWS 서버 DynamoDB에 Spring-data-dynamoDB를 통해 데이터를 기록하는 예시는 찾아보기 어려웠다. 글쓴이는 장시간의 검색과 삽질 끝에 AWS 서버의 DynamoDB에 연결하여 Spring-data-dynamoDB에 데이터 쓰기를 성공했다. 막상 성공하고 보니 코드도 간단하고 정말 별거 아닌데, 작성되어있는 예시가 없다보니 한참을 헤맸던 것이다. 본 글은 이 글을..