Web/Java (Spring+JSP)

    Spring Boot& Mongo DB & AWS EC2에서의 Timezone Sync에 대한 고찰

    채팅 어플리케이션 개발 중에 채팅을 보낸 시간이 제대로 저장이 안되는 버그가 발생하였고, 문제를 해결한 과정을 정리해 보았다. 사용 스택 Server : Spring boot & AWS EC2 Ubuntu 인스턴스 DB : MongoDB 제가 해결한 방식만이 옳은 건 아니니 참고만 해주시길 바랍니다! 문제 1: LocalDateTime을 MongoDB가 자동으로 UTC로 저장해버리는 문제 채팅을 저장하려고 할때 LocalDateTime.now() 메소드를 통해 MongoDB에 LocalDateTime타입 그대로 저장을 했다. 여기서 Java 어플리케이션 자체에선 KST로 잘 출력되던게 DB에 BSON으로 Converting되는 과정에서 UTC로 변환되어서 저장이 되어버렸다. LocalDateTime 객체..

    Spring Webflux/Netty/MongoDB로 채팅 서버 구현

    📌 Goal: Spring Webflux와 MongoDB를 활용해 양방향으로 소통할 수 있는 채팅 서버를 구현한다 1. 환경설정 MongoDB 외부에서도 DB에 접근할 수 있도록 cloud cluster를 하나 구성하고, Database와 collection을 생성한다. RDBMS에서의 Schema와 Table이라고 생각하면 된다. MongoDB에서 connection string을 제공하므로 복사해두고, 추후 yml 파일 설정 시에 사용한다. mongodb+srv://:@/?retryWrites=true&w=majority Spring Boot Reactive-web과 MongoDB를 사용할 수 있도록 Gradle을 추가해주었다. Reactive web에서는 default 서버로 netty를 사용한다...

    Spring Boot에서 구글 소셜 로그인 REST 방식으로 구현하기

    🌟Goal : Spring boot에서 구글 소셜 로그인의 백엔드 처리 프로세스를 REST API 방식으로 구현한다. 1. 구글 OAuth API 프로젝트 환경 구성 ⬇️ 구글 API를 사용하기 위해서는 우선 하단의 사이트에서 일련의 구성및 허가 과정을 거쳐야 한다. https://console.cloud.google.com/apis/dashboard Google Cloud Platform 하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요. accounts.google.com 1) 우선 사용자에게 보여질 Oauth 동의 화면을 구성한다. 2) 구글의 어떤 사용자 데이터까지 접근할 것인지 범위를 지정한다. 3) 테스트 사용자 추가는 우선 생략하고, ..