목록전체 글 (40)
땡글이LAB
스프링 & 스프링부트는 많은 개발자들이 오래전부터 이용한 프레임워크이고, 대부분의 프로젝트에서 롬복 라이브러리를 사용해서 많은 개발자들이 단순 노동을 대신해서 효율적으로 코드를 짜고 있다. 즉, 스프링 & 스프링부트로 개발한다면, 자주 사용되는 롬복 라이브러리에 대해서도 잘 이해해둘 필요가 있다. 최근 개발자들은 매번 스프링 빈들간에 의존성 주입을 해주거나 특정 Class의 생성자를 만드는 것을 단순 노동이라 여겨 위의 3가지 어노테이션을 잘 활용해서 중복되는 코드를 작성하는 것을 지양하고 있다. 이제 본론으로 들어가서, 각 어노테이션이 의미하는 바를 알아보자. @NoArgsConstructor 의미 스프링에서 사용되는 대부분의 어노테이션은 해당 어노테이션이 동작하는 것을 잘 표현하는 어노테이션 이름을 ..
도커의 구조 도커 명령어는 /usr/bin/docker 에 위치한 파일을 통해 사용되고 있다. 하지만, 도커 엔진의 프로세스는 /usr/bin/dockerd 파일로 실행되고 있다. 이렇게 되는 이유는 docker 명령어가 실제 도커 엔진이 아닌 클라이언트로서의 도커이기 때문이다. 도커의 구조는 크게 두 가지로 나뉜다. 클라이언트로서의 도커, 서버로서의 도커로 나뉜다. 실제로 컨테이너를 생성하고 실행하며 이미지를 관리하는 주체는 도커 서버이고, 이는 dockerd 프로세스로서 동작한다. 도커 엔진은 외부에서 API 입력을 받아 도커 엔진의 기능을 수행하는데, 도커 프로세스가 실행되어 서버로서 입력을 받을 준비가 된 상태를 도커 데몬이라고 한다. 다른 하나는 도커 클라이언트이다. 도커 데몬은 API 입력을 ..
이미지 생성하기 이미지를 생성할 때 생각나는 일반적인 프로세스는 다음과 같을 것이다. 이미지(CentOS, Ubuntu 등)으로 컨테이너를 생성 애플리케이션을 위한 환경을 설치하고 소스코드 등을 복사해 잘 동작하는 것을 확인 컨테이너를 이미지로 커밋(commit) 하지만, 위의 방법을 이용하면 애플리케이션이 동작하는 환경을 구성하기 위해 일일이 수작업으로 패키지를 설치하고 소스코드를 깃(Git)에서 복제하거나 호스트에서 복사해야 한다. 직접 컨테이너에서 애플리케이션을 구동해보고 이미지로 커밋하기 때문에 이미지의 동작을 보장할 수 있다는 장점도 있지만 매번 일일이 수작업을 하기에는 너무 힘들다. Dockerfile 도커는 위와 같은 일련의 과정을 손쉽게 기록하고 수행할 수 있는 빌드(build) 명령어를 ..
모든 컨테이너는 이미지를 기반으로 생성되며 이미지를 다루는 방법은 도커 관리에서 빼놓을 수 없는 부분이다. 이미지의 이름을 구성하는 저장소, 이미지 이름, 태그를 잘 관리하는 것 뿐만 아니라, 이미지가 어떻게 생성되고 삭제되는지 이미지의 구조는 어떻게 돼 있는지 등을 아는 것 또한 중요하다. 이번 장에서는 이미지를 관리하는 기본적인 방법을 알아본다. Debian 운영체제에서 apt-get install 을 실행하면 apt 리포지토리에서 패키지를 내려받고 RedHat 운영체제에서 yum install 을 실행하면 yum 리포지토리에서 패키지를 내려받듯이 도커는 기본적으로 도커 허브(Docker Hub)라는 중앙 이미지 저장소에서 이미지를 내려받는다. 도커 허브는 도커가 공식적으로 제공하고 있는 이미지 저장..
도커 네트워크 구조 컨테이너 내부에서 ifconfig 명령어를 입력하면, 컨테이너의 네트워크 인터페이스에 eth0과 lo 네트워크 인터페이스가 있는 것을 확인할 수 있다. 도커는 컨테이너에 내부 IP를 순차적으로 할당하며, 이 IP는 컨테이너를 재시작할 때마다 변경될 수 있다. 이 내부 IP는 도커가 설치된 호스트, 즉 내부 망에서만 쓸 수 있는 IP이므로 외부와 연결될 필요가 있다. 도커는 각 컨테이너에 외부와의 네트워크를 제공하기 위해 컨테이너마다 가상 네트워크 인터페이스를 호스트에 생성하며 이 인터페이스의 이름은 veth로 시작한다. veth 인터페이스는 사용자가 직접 생성할 필요는 없고 컨테이너가 생성될 때 도커 엔진이 자동으로 생성한다. veth이 의미하는 바는 'virtual eth' 이다...
도커 엔진에서 사용하는 기본 단위는 이미지와 컨테이너이고, 이 두 가지가 도커 엔진의 핵심이다. 두 가지에 대해 간단하게 다뤄보도록 하겠다. 도커 이미지 이미지는 컨테이너를 생성할 때 필요한 요소이며, 가상 머신을 생성할 때 사용하는 iso 파일과 비슷한 개념이다. 이미지는 여러 개의 계층으로 된 바이너리 파일로 존재하고, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용된다. 이미지는 도커 명령어로 내려받을 수 있으므로 별도로 설치할 필요는 없다. 도커에서 사용하는 이미지의 이름은 기본적으로 "[저장소이름]/[이미지이름]:[태그]"의 형태로 구성된다. ex) alicek106/ubuntu:14.04 저장소(Repository) 이름 이미지가 저장된 장소를 의미한다. 저장소 이름이 명시되지 않은 이미지는..
도커는 리눅스 컨테이너에 여러 기능을 추가함으로써, 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만드러진 오픈소스 프로젝트입니다. 도커는 Go 언어로 작성되어 있다. 기존에 쓰이던 가상화 방법인 가상 머신과는 달리 도커 컨테이너는 성능의 손실이 거의 없어서 차세대 클라우드 인프라 솔루션으로서 주목받고 있다. 기존의 가상화 기술은 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식이었다. 이러한 여러 개의 운영체제는 가상 머신이라는 단위로 구별되고, 각 가상머신에는 우분투(Ubuntu), CentOS 등의 운영체제가 설치되어 사용된다. 하이퍼바이저에 의해 생성되고 관리되는 운영체제는 게스트 운영체제(Guest OS)라고 하며, 각 게스트 운영체제는 다른 게스트 운영..
Auto scaling이란? AWS Auto scaling을 사용하여 관련 또는 연결된 크기 조정 가능한 리소스에 대한 자동 크기 조정을 몇 분 만에 구성할 수 있다. 예를 들어 태그를 사용하여 프로덕션, 테스트 또는 개발과 같은 카테고리로 리소스를 그룹화할 수 있습니다. 그런 다음 각 카테고리에 속하는 크기 조정 가능한 리소스에 대한 크기 조정 계획을 검색 및 설정할 수 있습니다. 또는 클라우드 인프라에 AWS CloudFormation이 포함된 경우 리소스 컬렉션을 만드는 데 사용할 Stack 템플릿을 정의할 수 있습니다. 그런 다음 각 Stack에 속하는 크기 조정 가능한 리소스에 대한 scaling plan을 생성합니다. AWS Auto Scaling은 다음 서비스 및 리소스에 대한 scalin..