이 글은 [2024 NEW] 개발자를 위한 쉬운 도커 강의를 듣고 작성한 글입니다! 모든 강의자료 이미지 출처는 해당 강사님께 있습니다. 이미지 레지스트리란? 이미지 레지스트리는 도커의 이미지를 저장하기 위한 저장소이다. 이미지 레지스트리를 통해서 개인이나 팀이 이미지를 공유하거나 필요한 이미지를 다운받을 수 있다. 깃허브가 소스코드를 저장하는 저장소이면, 도커허브는 이미지를 공유하는 저장소이다. 이미지 레지스트리 제품들이 공통적으로 제공하는 기능들을 정리하면 다음과 같다. 이미지 공유 : 이미지를 업로드 하고 다운로드 할 수 있다. 이미지 검색 : 이미지를 검색할 수 있다. 이미지 버전 관리 : 특정 버전의 이미지를 지정하여 다운받을 수 있다. 보안 : 원하는 사용자만 다운받을 수 있게 하거나, 업로드..
인프런
이 글은 [2024 NEW] 개발자를 위한 쉬운 도커 강의를 듣고 작성한 글입니다! 모든 강의자료 이미지 출처는 해당 강사님께 있습니다. 메타데이터 메타데이터는 데이터에 대한 데이터를 의미한다. 이미지가 실세로 압축된 데이터라면 메타데이터는 이 이미지에 대한 정보를 기술하는 데이터이다. 하나의 이미지는 실제로 압축된 파일과 파일의 정보가 저장되어 있는 메타데이터로 구성되어 있다. Env와 Cmd 이미지의 메타데이터에서 유심히 봐야 할 부분이 Env와 Cmd 필드이다. Env는 소프트웨어가 실행 시 참조할 설정 정보이다. Env는 Key와 Value로 이루어져 있다. (ex. VERSION=1.23.2) Env에는 버전 정보, 파일 경로와 같은 값이 저장되어 있다. 이 값이 바뀌면 이미지의 실행 방법이 달..
이 글은 [2024 NEW] 개발자를 위한 쉬운 도커 강의를 듣고 작성한 글입니다! 모든 이미지 출처는 해당 강사님께 있습니다. 이미지를 컨테이너로 실행하고, 이미지와 컨테이너의 차이를 알아보자. 이미지란?이미지는 특정 서버를 실행할 수 있는 상태를 저장한 압축 파일이다. 프로그램과 프로세스의 차이프로그램은 실행 가능한 소프트웨어이다. 프로그램을 설치하면 디스크를 차지한다. 프로그램인 상태에서는 CPU나 메모리 같은 컴퓨터의 리소스를 사용하지 않고, 스토리지의 디스크 공간만 차지한다. 파일 형태의 프로그램을 실행하면 프로세스가 된다. 프로그램은 여러 개의 프로세스를 실행할 수 있다. 프로세스는 CPU와 메모리를 사용한다. 이미지와 컨테이너이미지와 컨테이너의 관계가 프로그램과 프로세스의 관..
이 글은 [2024 NEW] 개발자를 위한 쉬운 도커 강의를 듣고 작성한 글입니다! 모든 이미지 출처는 해당 강사님께 있습니다. 이번에는 도커의 기본 명령어를 학습하고, Nginx 웹서버를 실행시켜 Nginx 컨테이너가 제공하는 웹 페이지에 접속해 볼 것이다. Docker 기본 명령어 Docker를 실행하고, 다음 명령어를 사용해보자. docker version : 클라이언트와 서버의 버전 및 상태를 확인 docker info : 플러그인, 시스템 상세 정보를 확인 docker --help : 메뉴얼 확인 아래 명령어는 도커의 기본 명령 작성 방법이다. Management Command는 대분류로, 생략이 가능하다. Command는 소분류로 필수이다. docker (Management Command) C..
이 글은 [2024 NEW] 개발자를 위한 쉬운 도커 강의를 듣고 작성한 글입니다! 모든 이미지 출처는 해당 강사님께 있습니다. 도커는 컨테이너를 관리하기 위해 만들어진 소프트웨어이다. 컨테이너는 큰 서버를 나누어 사용하기 위한 가상화 기술이다. 도커와 컨테이너를 이해하려면 서버와 가상화 기술이 무엇인지 알아야 한다. 가상화 기술에는 대중적인 가상화 기술인 Hypervisor, 새롭게 등장한 컨테이너 가상화인 Container가 있다. 엔터프라이즈에서 서버를 운영하는 방식은 총 3가지가 있다. 베어메탈(Baremetal)은 우리가 컴퓨터를 구입하여 사용하는 것과 비슷한 방식인데, 여러가지 이유로 비효율적이다. 그 외에 하이퍼바이저(Hypervisor), 컨테이너(Container) 방식이 있다. 가상화 ..
·API
지난 글에 이어서 이번에는 엔티티를 Dto로 변환하여 응답을 내려주는 것을 할 것이다. 01. 코드 작성 다음과 ordersV2 를 작성한다. @GetMapping("/api/v2/simple-orders") public List ordersV2() { List orders = orderRepository.findAllByString(new OrderSearch()); List result = orders.stream() .map(o -> new SimpleOrderDto(o)) // order를 dto로 변환함 .collect(Collectors.toList()); return result; } @Data static class SimpleOrderDto { private Long orderId; pr..
·API
API 개발 고급 에서는 주문 + 배송정보 + 회원을 조회하는 API를 만들 것이다. 지연 로딩 때문에 발생하는 성능 문제를 해결하는 것이 목표이다. Order - Member 는 ManyToOne, Order - Delivery 는 OneToOne 이다. 여기에서는 @XToOne에 대한 성능 최적화를 위한 과정을 진행한다. Order - OrderItem은 OneToMany이며 Collection 형태로, 나중에 진행한다. 00. 컨트롤러 작성 요청을 받아 처리할 컨트롤러를 작성하자. @RestController로 Json 형태로 객체 데이터를 반환함을 명시한다. @RequiredArgsConstructor 로 final 필드인 orderRepository를 주입받는다. @RestController @..