목록전체 글 (28)
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)는 기계 간 통신에 사용되는 표준 기반 메세지 ..
2024년에는 참 많은 일이 있었습니다. 2월에 대학교를 졸업하고 운좋게 3월에 바로 취업에 성공해 새로운 회사와 새로운 좋은 사람들을 만났습니다. 그렇게 3월부터 ~ 10월까지 회사에 다니다가 첫 직장을 퇴사하고 11월에 새로운 도전을 하기 위해 새로운 회사에 취직하여 현재까지 일을 하고 있습니다. 생각해보면, 2024년은 많은 도전을 한 해 였던 것 같습니다. 그래서 이제부터 매 년간 회고록을 작성해보려고 합니다. 시간이 지나도 생각나는 일들이 많겠지만, 그 때 당시의 기분은 지금이 아니면 무뎌지고 생생해지지 않을 것 같을 것 같아서 역시 글로 작성하는게 더 기억에 오래 남을 것 같기 때문입니다. 저의 2024년은 초반 취업을 준비하던 때, 첫 회사인 티맥스를 다닐 때, 티맥스에 퇴사하고 컨포트랩이라..
회사에서 프로젝트를 진행하면서, 프로젝트 초기에 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 : 메서드를 비동기적으로 실행하도록 만들어줍니다. 이를 통해 ..
이번 주제는 github actions로 CICD를 적용하는 과정에서 발생한 문제를 공유하려고 합니다. 저는 서버를 배포하기 위해 AWS EC2 인스턴스를 사용해서 배포를 진행했습니다. CICD를 적용하는 방식에는 여러가지 방식이 있는데, 저는 SSH 방식으로 서버 내에서 빌드 & 배포를 진행하는 방식을 사용했습니다. 간단하게 SSH란, SSH는 Secure Shell의 줄임말로, 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜입니다. 배포를 진행하면서 배포에는 필요하지만 외부에 공개되면 안되는 값들은 변수로 설정해 다른사람에게는 공개가 안될 수 있도록 처리해야 합니다. 제가 생각하기에 이러한 값들은 크게 2가지로 나눌 수 있다고 생각합니다.github actions가 CICD 동작 시에 기본적으로..