전체 글

·Docker
이미지를 빌드할 때캐싱을 어떻게 활용할까?      이미지 빌드 시에 적용되는 캐싱 --캐싱이란?시간이 걸리는 작업의 결과물을 미리 저장해 두고동일한 작업이 발생했을 때 다시 작업을 수행하지 않고 저장해 둔 결과를 빠르게 제공하는 기술로빌드 속도를 빠르게 만들어주는 기술이다.  위 그림처럼dockerfile의 지시어들을 사용해서 레이어를 하나씩 추가하게 된다.이러한 과정에서 각 레이어들은 도커가 캐시로 저장하게 된다.  이후 다시 같은 내용으로 동일한 빌드를 수행하게 되면즉, 빌드에서 동일한 지시어를 사용하게 되면이미지 레이어를 새롭게 만드는 것이 아니라이전에 캐시에 저장되어 있는 이미지 레이어를 그대로 가져와서 사용할 수 있다.새로 레이어를 만들지 않고 기존에 저장했던 레이어를 가져와서 사용하니 빠르게..
·Docker
이미지 레이어는 어떻게 관리해야 할까?      dockerfile과 이미지 레이어 -- 이미지는 레이어로 구성되어 있으며 이미지를 빌드할 때 생성되는 레이어는 일반적으로 dockerfile에 작성된 지시어 하나당 레이어 한 개가 추가된다.(레이어를 추가하지 않는 지시어도 존재한다.) 위 그림에서는레이어가 5개 추가된 것을 볼 수 있지만베이스 이미지인 node:14 이미지는 이미 레이어가 14개로 구성된 이미지기 때문에결과적으로 총 18개의 레이어로 구성된 이미지가 빌드될 것이다. 레이어의 개수가 늘어나는 것은 이미지의 크기를 증가시키는 것이고이미지의 크기가 증가된다면 빌드의 속도가 느려지고 이미지 관리도 복잡해지는 단점이 생긴다. 그래서 레이어는 꼭 필요한 레이어만 추가하는 것이 좋다.     레이어의..
·Docker
볼륨이 무엇이며어떻게 사용하는 것일까?      볼륨 (Volume) --볼륨은도커에서 컨테이너와 호스트 간의 데이터들을 공유하거나데이터를 영구적으로 저장하기 위해 사용되는 저장소이다. 도커에서 컨테이너는 Stateless 하기 때문에컨테이너가 삭제 또는 재시작이 되면 기존에 사용했던 모든 데이터가 컨테이너를 시작하기 이전인 이미지의 상태로 초기화가 된다.즉, 컨테이너가 실행된 이후에 모든 동작 기록은 컨테이너 레이어에 쌓이게 되는데이 컨테이너 레이어는 컨테이너 삭제 or 재시작이 되면 없어진다. 하지만 서버를 운영을 하다보면 쌓인 데이터를 계속 유지해야 하는 경우가 존재한다.또는 트래픽을 분배하기 위해 로드밸런싱을 사용하여 여러 개의 동일한 서버를 운영해야 되며이렇게 동일한 서버에서 일관성있는 데이터를..
·Docker
가상 네트워크는 무엇이고어떻게 동작하는 것일까?      네트워크란? --2024.06.23 - [Terminology] - 네트워크란? (feat. IP, 네트워크 인터페이스, 포트, NAT, 포트포워딩, DNS)--    가상 네트워크 구성 --가상 네트워크는서버 한 대 안에서 여러 네트워크를 구성하는 기술이다. 해당 가상 네트워크망 안에서 컨테이너들이 존재할 수 있고해당 컨테이너들은 같은 가상 네트워크망 안에서 서로 통신할 수 있으며내부의 컨테이너와 외부의 서버와도 통신이 가능하다.   위 그림은사설망을 통해서 현재 사용 중인 PC에 IP(192.168.0.10)를 할당받고해당 PC에 도커 가상화 기술을 사용하여 내부에 컨테이너 여러 대를 실행시킨 구조이다. 인터넷 선(랜선)이나 공유기와 같이 물리..
·Docker
가상 네트워크에 포트포워딩을하는 이유와 방법이 무엇일까?      가상 네트워크의 NAT, 포트포워딩 --가상 네트워크에서 포트포워딩을 하는 명령어 형식docker run {-p 호스트OS포트:컨테이너포트} ...  -p 포트포워딩을 지정해주는 옵션 "-p" 옵션으로 `:` 클론을 기준으로 두 개의 포트를 작성하여 포트포워딩을 지정해 준다. 왼쪽에 작성하는 포트  =  서버(PC)에서 사용할 호스트OS의 포트번호를 지정오른쪽에 작성하는 포트  =  컨테이너가 사용하는 포트번호를 지정 기본적으로 같은 가상 네트워크 안에서 컨테이너를 실행하면 해당 컨테이너끼리는 통신이 가능하다.다만 도커를 설치하고 사용 중인 서버(PC)의 호스트 OS나 가상 네트워크의 외부에서 가상 네트워크의 컨테이너로 접근하려면 포트포워..
·Docker
프론트엔드, 백엔드, 데이터베이스를 서로 연결하여애플리케이션 구현은 어떻게 할까?"leafy"라는 식물 관리 애플리케이션을 구현해 보자.      구성 및 흐름 --   실습할 애플리케이션은 총 3개의 서버로 구성되어 있다.Vue.js 기반인 Nginx 웹 서버Spring Boot 기반인 Spring Boot Tomcat WAS 서버PostgreSQL 기반인 Database 서버 흐름 설명클라이언트는 웹 서버의 주소를 브라우저에 입력하여 요청을 보냄웹 서버에서 index.html 파일과 같이 웹페이지를 응답하여 제공클라이언트가 웹 페이지를 읽는 과정에 어떠한 데이터 정보를 접근해야 하는 경우브라우저에서 백엔드로 데이터 관련 요청을 보냄백엔드에서 데이터 조회 및 저장을 하려면 postgreSQL에 접근하여..
·Docker
클라우드 네이티브 애플리케이션이 무엇인가?      클라우드(Cloud)란? --네이버 클라우드나 구글 클라우드처럼 클라우드는 보통 저장소를 의미한다. 즉, 클라우드는 다른 회사의 저장소를 빌려서 사용하는 것이다. 그러다 보니 직접 서버를 운영할 환경이 안된다면 다른 회사의 컴퓨터(클라우드)를 빌여서 서버를 운영하면 된다. 실제로 클라우드를 사용하여 서버를 운영하면 다양한 문제들을 해결할 수가 있다.  1. 트래픽 변동에 대해 빠르게 대처할 수 있는가?  (확장성 Scalability) 직접 서버를 운영하면 내 서버 용량에 맞춰서 설계를 해야 하고사용 가능한 용량을 넘어서는 트래픽이 증가하면 해당 서버는 다운되고 말 것이다.클라우드 환경에서는 트래픽이 증가하면 빠르게 서버를 늘리고 트래픽이 감소하면 서버..
·Terminology
네트워크란 무엇이고네트워크에서 사용하는 용어들은 무엇일까?      네트워크(Network)란? -- 네트워크는 여러 개의 장치들이 서로 연결되어서 정보를 주고받을 수 있는 시스템이다. 위 그림처럼네트워크는 렌선 케이블로 물리적으로 연결되어 있으며이 물리적인 케이블을 가지고 전기 신호를 통해서 정보를 주고받을 수 있게 되는 것이다. 즉, 네트워크는 여러 장치(컴퓨터)들이 서로 데이터를 주고 받을 수 있도록 연결된 시스템이다.--    IP 주소 (Internet Protocol Address)란? --택배나 편지를 보낼 때 상대방의 주소가 필요하듯이네트워크에서도 정보를 보내기 위해서는 IP 주소가 필요하다. 즉, IP 주소는 네트워크 상에서 장치(컴퓨터)들을 식별하기 위한 고유한 주소다.(컴퓨터가 인터넷..
아-니지
성장 기록.zip