카테고리 없음2024. 7. 20. 19:46Spring에서 Logging 설정하기

실제 운영 서비스와 개발 단계의 로깅 전략을 분리하고 싶다는 생각에 로깅에 대해 찾아보았다. 목표는 개발 단계에서는 콘솔에서 로그를 확인하고, 운영 단계에서는 파일에 로그를 기록하고 날짜 별로 분리를 하고, Error 로그만 기록하는 Error 로그 파일을 따로 관리하는 것이다. 로깅이란?서비스를 개발하거나 운영할 때 서비스의 에러를 파악하고, 디버깅하기 위해 사용한다.그리고 유저의 행동와 같은 다양한 정보들도 로그를 통해서 기록하고 활용할 수 있다.  Log Level로그를 나누는 기준은 크게 아래 다섯 개가 있다. TRACE와 DEBUG는 개발 단계에서 자세한 내용을 확인할 때 사용하고, INFO는 정보를 기록할 때, WARN은 치명적이지는 않지만 일반적이지 않은 상황, ERROR는 서비스에 문제가 ..

카테고리 없음2024. 7. 16. 10:37Spring 다중 DB 연결

프로젝트를 진행하다 보면 여러 개의 데이터베이스를 연결할 일이 생긴다.예를 들어 MSA 환경에서 분산 DB를 사용하는 경우 하나의 micro service에서 여러 DB에 접근할 필요가 있을 수 있다.이런 경우 micro service 간의 통신을 통해 필요한 데이터를 API로 받아올 수 있는데, 이 경우에는 각 micro service의 역할이 더 명확해지긴 하지만, 성능 측면에서는 DB에 직접 접근하는 것 보다 훨씬 느리다는 단점이 있다.  DB 설정 방법yml 설정spring: datasource: first-db: jdbc-url: ${DB_URL_1} driver-class-name: org.postgresql.Driver username: **** p..

Git Submodule 사용 방법
카테고리 없음2024. 7. 16. 06:49Git Submodule 사용 방법

Git Submodule이란?Git repository 안에 다른 repository를 주입할 수 있고, 주입된 repository가 submodule이 된다.이때 submodule은 main repository와 독립적인 상태를 가진다.즉, submodule에 대한 업데이트는 해당 디렉터리에서만 가능하다. 어떨 때 사용하는가?모듈화된 다른 프로젝트를 받아서 사용하고 싶을 때보안이 필요한 데이터를 private repo에 저장하고 해당 repo를 submodule로 등록해서 보안을 유지하고 싶을 때나의 경우는 환경 변수와 설정 파일이 노출되지 않고, 어떤 환경에서든 프로젝트를 클론 받으면 환경 변수와 설정이 적용되게 만들고 싶었다.hashicorp vault 같은 암호화 저장소를 사용하는 방법도 있지만,..

사이드 프로젝트에서 Node JS를 선택한 이유
카테고리 없음2024. 7. 12. 11:48사이드 프로젝트에서 Node JS를 선택한 이유

MSA로 사이드 프로젝트를 계획하면서 하나의 언어만 사용하기보다 다양한 언어와 환경을 구축해 보는 것이 재미있을 것 같아서 새로운 Micro Service에는 Node JS를 사용하기로 결정했다. Node를 선택한 이유 빠른 개발 속도와 쉬운 난이도아래는 Get 요청을 통해 Hello World를 반환하는 Node와 Spring 코드에 대한 비교이다. 딱 보기에도 Node JS는 매우 간결하다. 개인적으로 Spring의 경우 코드의 양이 많아졌을 때 Node 보다 구조화가 잘 되어있기 때문에 읽을 때는 더 편하다고 생각하지만, 다양한 설정이 필요하고, 코드의 양이 Node 보다 많기 때문에 개발 속도는 Node가 더 빠를 것으로 보인다. 더불어 Spring은 워낙 규모가 크다보니 기능도 많고 알아야 할 ..

image