Development 41

[개발 Tip] Yaml, Properties 안에 중요한 정보를 암호화하기 feat. Jasypt 사용 방법

들어가며 며칠 전, Github에 토이 프로젝트 소스를 올렸더니, GitGuardian에서 *.yaml 파일에 계정 정보가 들어가 있다고 알려주었다. 단순히 파일만 삭제하고 커밋하면 git log를 통해 다시 확인할 수 있는 여지가 있어서 reset 후 gitignore에 *.yaml파일을 추가하여 재 커밋하였다. 이런 문제를 더 쉽게 해결할 수 있는 방법은 없을까 고민하다 프로퍼티 정보 암호화 방법을 찾게 되어 이렇게 공유한다. Jasypt란 무엇?? Java Simplified Encryption의 약자로, 자바로 간단히 암호화할 수 있게 도와주는 라이브러리다. 읽을 때는 '자시프트' 라고 발음하는 것 같다(유튜브 참고) 자세한 정보는 이곳을 참고하여 확인하면 된다. 그럼 바로 예제 코드를 살펴보자...

[Synology] NAS 방화벽 설정방법 feat. 방화벽 설정 규칙 추천

들어가며 처음 나스를 설치하고 방화벽 때문에 고생이 많았다. 인프라에 대한 지식이 없는 것도 한몫했다. 그래서 직접 찾아낸 방화벽 포트를 설정하는 방법을 공유하려고 한다. 방화벽 설정 방법 우선 [제어판 - 보안 - 방화벽] 으로 이동하여 "방화벽 프로파일 규칙 편집"을 클릭한다. 방화벽 프로파일은 설정값을 저장하는 단위다. 따라서 한 번에 하나의 프로파일만 적용되므로 일반적인 경우에는 여러 개의 프로파일을 만들 필요가 없다. 따라서 기본으로 주어진 프로파일을 관리해가면 된다. 다음은 포트 설정이다. 필자의 나스에는 랜선이 하나만 물려있어서 "모든 인터페이스"에 적용하도록 했다. 방화벽 설정은 크게 4 덩어리로 구분했다. 전 세계 어디서든 접속 가능한 포트 - 허용 특정 국가를 기준으로 접속을 차단하는 ..

Development/Infra 2022.05.04

[Springboot] bootRun과 docker-compose 자동으로 함께 실행하기 feat. spring.profiles.active 기본값을 local로 변경

들어가며 필자는 로컬에서 개발한 코드를 개발서버나 운영서버에서 배포하기 위해 gradle의 bootRun을 사용한다. 이때에도 도커의 컨테이너가 죽어있다면 혹은 이미지조차 없다고 하더라도 자동으로 설치되고 실행되면 좋겠다는 생각이 들었다. 그래서 bootRun에 도커컴포즈 파일을 실행할 수 있도록 작업을 추가하였다. 뭐든 손이 덜 가야 편하니깐! bootRun 설정하기 먼저 아래 포스팅과 동일한 상태까지는 따라와야 된다. 이번 글은 여기까지 설정을 완료된 상태라고 가정하고 작성했다. [Intelli J] Springboot + docker-compose 자동으로 함께 실행하기 feat. Gradle plugin 추천 들어가며 토이 프로젝트 진행하면서 Kafka가 필요하여 docker-compose 파일을..

[Intelli J] Springboot + docker-compose 자동으로 함께 실행하기 feat. Gradle plugin 추천

들어가며 토이 프로젝트 진행하면서 Kafka가 필요하여 docker-compose 파일을 만들었다. 도커 컴포트 파일로 로컬 프로젝트를 실행할 때, 보통 아래와 같은 절차를 거친다. docker-compose Up을 하여 컨테이너를 실행한다. 스프링부트를실행한다. 근데 필자는 스프링부트를 실행할 때 자동으로 docker-compose 내에 명시된 컨테이너를 실행하고 싶었다. 왜냐? 터미널 들어가서 명령어 치는 게 귀찮았기 때문이다. docker-compose 자동으로 실행하기 적용하는 순서를 먼저 요약하면 다음과 같다. 기본적으로 각자에게 필요한 docker-compose 파일은 생성했다고 가정하고 진행하니 아직 docker-compose 파일이 없다면 먼저 준비해야 한다. 'com.palantir.do..

스프링에서 빌더 패턴 사용 시 주의사항 feat. 마이바티스에서 빌더 객체 오류

들어가며 빌더 패턴은 개인적으로 좋아하는 방식이다. 생성자는 필드 값이 길어지면 순서에 의존하는 경향이 강하고 자바 빈 방식은 데이터가 명확하게 세팅되지만 변경 가능하다는 단점이 있다. 빌더 패턴은 불변성 때문에 귀찮은 경우가 발생하지만, 위 두 가지 단점을 한 번에 해결할 수 있다. 그래서 이제는 다들 적극적으로 사용하고 있는 것 같다. 그럼 스프링 + Mybatis 환경에서 빌더를 적용하는 중 발생했던 오류를 보면서 무엇을 조심해야 하는지 살펴보자. 여기에는 Lombok 라이브러리를 사용했다. 문제 발생 상황 책의 제목을 변경하는 API를 개발한 BookRestController가 있다. 변경할 책의 ID와 변경하고자 하는 제목을 title 필드에 담아서 전달받는다. 기존에 잘 사용하던 기능이었으나 ..