반응형
도커 이미지는 컨테이너를 만들기 위한 "압축파일" 개념이다.이미지는 한번 만들어지면 이미지 내의 정보는 절대 변하지 않으며(불변성), 이미지를 통해 컨테이너를 만들 수 있다.이 이미지는 컨테이너를 만들었다고 사라지지 않고, 하나의 이미지로 여러개의 컨테이너를 만들 수 도 있다. 이 이미지를 만들기 위해서는 dokckerfile 도커파일을 작성해야 한다.도커 파일 작성방법은 아래 링크를 통해 확인할 수 있다. [Docker] dockerfile의 개념과 작성법에 대해 알아보자. hstory0208.tistory.com 도커 이미지는 컨테이너를 생성하기 위한 모든 정보를 갖고 있기 때문에 보통 수백MB ~ 수GB가 넘는다. (VM에 비해서는 상당히 작은 용량)그런데 기존 이미지에서 작은 변경사항이 생겨 도커..
DockerFile이란? Dockerfile은 Docker Image를 생성하기 위한 스크립트(설정파일)이다. 여러가지 명령어를 토대로 Dockerfile을 작성한 후 빌드하면 Docker는 Dockerfile에 나열된 명령문을 차례대로 수행하며 DockerImage를 생성한다. Dockerfile을 읽을 줄 안다는 것은 해당 이미지가 어떻게 구성되어 있는지 알 수 있다는 의미이기도 하다. 도커 파일은 레이어 개념으로 실행 되기때문에 레이어 순서대로 작성해주는게 좋다. DockerFile 작성법 기본적으로 도커 파일의 파일명은 확장자 없이 Dockerfile 이다. FROM 베이스 이미지를 지정. 생성할 이미지의 베이스가 될 이미지를 의미한다. 로컬에 해당 이미지가 없는 경우 Docker Hub에서 가져..
Docker란?Docker는 컨테이너 기반의 오픈 소스 가상화 플랫폼으로, 애플리케이션 및 그에 따른 환경을 격리된 컨테이너에 패키징하여 개발, 배포, 실행을 쉽게 지원하는 툴이다. 먼저 Docker를 이해하기 위해서는 가상화에 대해서 이해가 필요하다. 가상화란?하이퍼바이저를 이용해 여러개의 운영체제를 하나의 호스트에서 생성하는 방식이다. 하이퍼바이저하드웨어에서 시스템의 운영 체제와 리소스를 분리해 VM에 할당하여 가상 머신을 생성하고 구동하는 소프트웨어이다.하이퍼바이저는 다음과 같은 역할을 수행한다.실제 CPU, RAM, 디스크, 네트워크 카드 등을 가상화하여 VM에게 제공 (VM은 이 가상 하드웨어를 진짜 하드웨어로 인식)호스트 OS가 실제로 갖고 있는 물리적 자원보다 더 많이 할당할수도 있다.각 V..
Spring Data JPA는 JPA가 제공하는 엔티티 그래프 기능을 편리하게 사용하게 도와주는데, 이 기능이 바로 @EntityGraph이다. JPQL로 fetch join을 직접 작성하지 않고 @EntityGraph 어노테이션을 붙임으로서 fetch join을 편리하게 사용할 수 있다. 즉, @EntityGraph는 fetch join을 적용해주기 때문에 N + 1 문제를 해결하고, 성능 최적화에 도움을 줄 수 있다. (fetch join의 간편 버전) fetch join 이란? => 2023.06.12 - [JAVA/JPA] - [JPA] JPQL의 fetch join(패치 조인)이란? 사용 방법 Member와 Team 엔티티가 있고 이 둘은 "1 : 다" 양방향 관계를 갖는다고 가정해보자. 이 때..
페이징 (Pageable, Page, Slice ) 데이터베이스의 대용량 데이터를 처리할 때, 데이터를 효율적으로 로드하고 출력하기 위해 페이지 단위로 데이터를 분할하여 가져오는 기능을 페이징이라고 한다. 페이징 적용 코드 다음과 같은 순서와 방식으로 페이징을 적용할 수 있다. public interface MemberRepository extends JpaRepository { Page findByAge(int age, Pageable pageable); } /** * 1. PageRequest 객체 생성 * PageRequest.of() 메소드를 사용하여 페이지 번호와 페이지 크기를 전달하며 PageRequest 객체를 생성할 수 있다. * 이때 정렬 조건이 있는 경우 추가적으로 Sort 객체도 함께..
메소드 이름으로 쿼리 생성 Spring Data JPA는 메서드 이름을 통해 쿼리를 작성해주는 쿼리 기능을 제공한다. (공식 문서 : Spring Data JPA - Reference Documentation) List findByUsernameAndAgeGreaterThan(String username, int age); 위 메서드 이름을 통해 실행도니느 쿼리는 다음과 같다. select m from Member m where m.username = :username and m.age > :age" 이 기능은 보통 파라미터 개수가 적을 때 사용한다. ( 파라미터 수가 많아지면 메서드 이름이 너무 길어져 가독성이 떨어짐 ) 그리고 엔티티의 필드명이 변경되면 인터페이스에 정의한 메서드 이름도 꼭 함께 변경..