목록분류 전체보기 (27)
DevYGwan
이번에는, JWT에 대해서 공부한 것을 공유해보려고 합니다. 기본적으로 JWT는 Json Web Token의 약자로, 데이터를 외부와 주고 받을 때 인증과 권한 부여을 위해 주로 사용합니다. 이번에 JWT Token을 가지고 이를 포함한 QR Code을 생성하여 처리하는 로직을 구현했는데, 이를 구현하면서 단순히 라이브러리를 통해 JWT을 생성하고, 인증하는 과정을 넘어서 JWT의 목적과, 암호화 기법에 대해 공부하게 되어 이를 공유해보도록 하겠습니다.공유에 앞서, 간단하게 JWT을 한번 정리해보도록 하겠습니다. ※ JWT란JWT(Json Web Token)의 약자로, Json 기반의 토큰을 의미한다.JWT는 클라이언트-서버 통신에서 효율적이고 간단한 인증 수단이다.JWT는 크게 세가지 부분으로 나뉘며..
회사에서 IoT 간의 데이터 통신 시스템을 구축할 필요성이 있다고 해 서버에 적용할 필요가 있었습니다. 현재 IoT 데이터는 MQTT라는 프로토콜을 통해 MQTT Broker(AWS IoT)와 연결되어 통신하고 있으며, 이번에 백엔드 서버까지 해당 브로커에 연결되어 IoT 기기와 통신 시스템 구축이 필요하다고 했고 이 파트를 제가 담당하게 되었습니다. MQTT에 대한 기본적인 이해가 잘 되어야 어떤식으로 환경 및 설정을 처리할지 윤곽이 잡히기 때문에 이번 기회에 한번도 경험하지 못한 MQTT 프로토콜이 뭔지 정리하면서, 백엔드 내부 Config 로직까지 정리해보려고 합니다. ※ MQTT란MQTT(Message Queue Telemetry Transport)는 기계 간 통신에 사용되는 표준 기반 메세지 ..
회사에서 프로젝트를 진행하면서, 프로젝트 초기에 DB 관련 DDL 관리가 힘들다는 것을 느꼈습니다. 프로젝트 초기다보니 DDL 수정이 자주 발생하고, 환경 별로 DB 서버를 다르게 하다보니 DB의 변경사항이 발생했을 때, DB 동기화 작업을 매번 하는 것이 번거로워 개발 생산성 저하로 이어지는 문제가 발생했습니다. 그러다보니 자체적으로 초기에는 DB 환경을 하나로 만들어 개발하는 전략으로 진행했습니다... 하지만 이는 환경 별로 종속성이 생겨 협업에 취약하고 서비스 배포 이후에 큰 문제를 야기할 수 있습니다. 따라서 이러한 문제를 해결하기 위해 방법을 찾아보던 중 Flyway라는 DB 형상관리 툴을 알게 되었습니다. 따라서 이를 적용하려고 겪은 시행착오 경험과 결론적으로 Flyway 공식 레포에 기여를 ..
회사에서 flyway을 도입하려 했는데 저희가 사용하는 DB가 flyway를 지원하지 않는 문제를 발견했습니다. 해당 공식 Repository에서 지원하는 DB 목록을 볼 수 있습니다. (https://github.com/flyway/flyway) 따라서 이 문제를 해결하기 위해 flyway 지원 코드를 작성했고 테스트를 완료했습니다. 이에 대한 설명은 다음 장에서 설명드리도록 하겠습니다. 그렇게 해서 flyway 지원을 성공적으로 했고, 공식 레포에 문의하여 PR을 통해 지원할 수 있게끔 요청을 남겼습니다. 하지만 문제가 PR이 언제 될지 모르고, 응답도 빨리 오지 않아 당장 사용하기가 힘들었습니다. 그래서 이 문제를 해결하기 위해 "우리가 작성한 코드를 라이브러리로 배포해보자" 라는 생각이 들었습니..
기본적으로 스프링에서 비동기 처리를 할때, 기본적으로 비동기 처리에 필요한 Executor를 등록하고 @Async 어노테이션과 @EnableAsync을 사용해서 비동기 처리를 진행합니다. 이때 이에 대한 원리를 제대로 알지 못해 제가 등록한 Executor와 @Async 어노테이션에서 사용하는 Executor가 다른 문제를 확인했고 이를 공유하려고 합니다. 간단하게 위에서 말한 개념들을 설명하자면,Executor : Java 표준 라이브러리에서 제공하는 인터페이스로, 비동기 작업을 실행하는 데 사용됩니다.구현체로 ThreadPoolExecutor, ForkJoinPool이 있습니다.쓰레드풀을 관리하고 작업을 실행하는 역할을 합니다.@Async : 메서드를 비동기적으로 실행하도록 만들어줍니다. 이를 통해 ..