본문 바로가기

전체 글10

[Spring] profile별 환경 분리 하기 Spring profile별 환경 분리 하기 1. 환경을 분리해야 하는 이유? 실무에서 개발할때는 운영 환경에 테스트를 할수는 없습니다. 테스트시에 혹여나 데이터를 잘못 건드리는 경우는 장애를 초래 할수 있기 때문인데요. 테스트간 별다른 큰 문제가 발생하지 않으면 좋겠지만, 그렇지 않을 확률이 높으니까요. 그래서 테스트시에는 별도로 분리된 환경에서 테스트하는것이 좋습니다. 혹여나 잘못되더라도 운영 환경에는 아무런 영향이 없기 위함입니다. 예를들면 테스트간 사용하는 DB는 개발용도로만 사용하는 DB이면 좋을것입니다. 2. 어떻게 분리된 환경을 사용할까? 스프링에서는 설정된 프로필에 따라 다른 환경에서 구동될수 있도록 하는 기능을 제공하고 있답니다. 예를 들어 개발환경에서 테스트하는 경우 로컬 DB에 접근 .. 2024. 2. 13.
[Spring] 의존성 주입(Dependency Injection, DI) 정리 [Spring] 의존성 주입(Dependency Injection, DI) 정리 1. 의존성 주입(DI) 이란 무엇인가? 의존성 주입 (Dependency Injection)에 대해 알아보기 전에 객체지향 프로그래밍에 대해 알아보겠습니다. 객체 지향 프로그래밍을 통해 애플리케이션을 만들때 다양한 객체를 생성하게 됩니다. 생성된 객체들은 특정 기능을 수행하기 위해 서로 다른 객체들과 상호 작용(message passing)을 하게됩니다. 좀더 쉽게 설명하기 위해 자동차, 휠, 타이어를 예로 들어보겠습니다. 1. 자동차는 4개의 바퀴를 가지고 있고, 바퀴는 휠과 타이어로 구성되어있습니다. 2. 경우에 따라 자동차의 휠과 타이어를 교체할 수 있습니다. 위의 문장에 객체를 대입해서 생각해보겠습니다. 1. 자동차.. 2023. 8. 8.
[Spring] @EnableJpaAuditing 기능 사용해 생성/수정 시간 등록하기 EnableJpaAuditing 사용해보기 1. JPA Auditing 이란 무엇인가? 데이터 베이스에 존재하는 테이블들에는 공통적으로 존재하는 데이터들이 있습니다. 바로 생성 날짜, 마지막 수정 날짜와 같은 컬럼 입니다. ORM을 사용하는 경우는 이런 공통 데이터들이 엔티티 마다 중복된 코드들이 존재하게 됩니다. 만일 공통된 부분의 수정이 있는 경우 관련된 코드를 전부 변경해줘야 합니다. 그래서 보통은 이런 공통 데이터만을 갖고 있는 엔티티를 별도로 만들고, 이 클래스를 상속 받아 사용합니다. 다음과 같이 말이죠. public abstract class BaseEntity { private LocalDateTime createdAt; private LocalDateTime updatedAt; } pub.. 2023. 6. 29.
[Docker] 도커 exec 명령어 사용법 Docker에서 명령어 실행하기 1. Docker 우선 도커가 설치되어있어야 합니다. 도커 설치는 기존 포스팅을 참고 해주시기 바랍니다! 도커 컨테이너 환경을 사용하면 때로는 명령어를 수행 하고 싶을때가 있습니다. 컨테이너 내부에 파일이 정상 존재하는지 확인 해야되는 경우도 있고, 볼륨이 제대로 마운트 되었는지 확인 해야되는지 확인이 하고 싶을때도 있고, 서버스간 정상 적으로 통신을 하는지 등을 확인이 필요한 경우도 있습니다. 이때 아래와 같이 도커 컨테이너 내부에 직접 접속해서 명령어를 확인 하는 방법도 있습니다. docker exec -it alpine-container bash 하지만 직접 접속하지 않아도 될정도로 간단한 작업인 경우도 있습니다. 또한 반복적으로 작업을 수행해야 하는 스크립트를 작성.. 2023. 3. 31.
[Docker] 도커 컴포즈 사용법 (Docker Compose) 및 Nginx 컨테이너 실행하기 도커 컴포즈 사용법 (Docker Compose) 1. 도커 컴포즈란? (docker-compose) 도커 컴포즈가 무엇인지 설명하기에 앞서, 왜 도커 컴포즈를 사용하는지 알아보도록 하겠습니다. 도커 환경에서 개발을 하다보면 컨테이너를 추가하거나 삭제 또는 재시작을 자주, 많이 하게 됩니다. 한개 혹은 두개 정도의 컨테이너를 사용하는 경우 쉽게 컨테이너를 추가하거나 삭제 할 수 있습니다. 하지만 서비스의 규모가 커지고 수없이 많은 컨테이너를 사용하게 된다면 어떻게 해야될까요? 간단히 생각해보면 자동화 스크립트 등을 통해 컨테이너를 다루는 방법을 생각해볼수 있습니다. 하지만 설정이 바뀐다면 어떻게 될까요? 또 통일된 인터페이스가 아니라 혼동을 줄수있다면 어떻게 될까요? 예를 들어보겠습니다. 다음은 ngin.. 2023. 2. 16.
[Docker] 도커 파일 복사, 가져오기 Docker에서 파일 복사 기능 이용하기 1. Docker 우선 도커가 설치되어있어야 합니다. 도커 설치는 기존 포스팅을 참고 해주시기 바랍니다! $ docker -v Docker version 20.10.17, build 100c701 도커 버전을 확인합니다. 도커가 정상 설치되었으므로 본격적으로 테스트에 사용할 Alpine 리눅스를 설치해 보겠습니다. docker pull alpine 이미지 부터 다운로드 해줍니다. docker run -d -it --name alpine-container alpine:latest sh 그다음 테스트에 사용할 알파인 리눅스 컨테이너를 생성해줍니다. 2. Docker 컨테이너로 파일 복사하기 호스트에 있는 파일을 도커 컨테이너의 특정 경로로 복사하는 명령어는 다음과 같.. 2023. 2. 16.