개발을 하다보면 자주 접하게 되는 단어이자 필수가 되어버린 VM과 Container 이 둘은 어떠한 의미를 가지고 있는지 그리고 어떻게 차이가 있는지에 대하여 한번 이야기 해보고자 합니다. VM(Virtual Machine)VM 즉, 가상화 머신이라고 불리는 기술은 하나의 컴퓨터 자원을 소프트웨어 기술을 통해 나누는 기술을 의미합니다. VM을 만들고자 하면 각 가상화마다 OS가 필요로 하게 되고, 생성된 VM에 어플리케이션과 환경을 설정하게 됩니다. 이렇게 만들어진 가상화 머신을 이미지화 하여 원하는 만큼 복제를 할 수 있다는 장점을 가지고 있습니다. 이러한 가상화 머신이 가진 장점으로 인해 오랜 시간동안 많은 개발자들의 관심을 받을 수 있었고 지금도 여러 회사에서 해당 기술을 통해 개발을 진행하고 있..
3티어 레이어는 개발에서도 자주 사용되는 용어로 개발자에게도 많이 익숙한 용어 입니다. 이러한 3티어 레이어라는 것이 실제로 인프라에서는 어떻게 접목이 되고 있는지 알아보도록 하겠습니다. 3티어 레이어3티어 레이어는 말그대로 레이어를 3계층으로 나누어 관리를 하는 방식을 의미 합니다.여기서 의미 하는 각 레이어에 대한 설명은 아래와 같습니다. #Web Layer 는 기본적으로 정적 페이지를 제공해주는 서버를 의미합니다. 현 시대에서는 이러한 정적과 동적에 대한 의미가 많이 퇴색이 되고 있는 현황에 있고 이를 두고도 많은 아키텍처가 생겼기도 합니다. #Service Layer 흔히 알고 있는 Application Server들이 존재하는 곳 들로 여러 API를 제공함으로써 여러 GUI에서 해당 기능을 ..
이제는 개발자로써 프로그래밍만을 하는 것에서 끝나지 않고 지속적인 운영관리에 대한 부분도 역할을 맡고 있습니다. 이러한 기술적 변화는 기존 시스템 개발자와 소프트웨어 개발자 간의 간극이 더 커졌다고 생각하고 있습니다. 그렇다면 전반적인 아키첵터와 각 인프라에 대한 기초 내용들을 함께 보면서 어떻게 달라지고 현 상황은 어떻게 되는지 이야기 해보도록 하겠습니다.소프트웨어 생명주기와 역할소프트웨어는 기본적으로 생명주기를 가지고 있습니다. 생명주기라는 것은 어찌보면 소프트개발에서 필수적인 영역이라고 생각하는데요. 필수적이라고 보는 이유는 알게 모르게 우리가 이러한 방식으로 개발을 하고 있기도 하고 또 더욱 체계적인 개발을 하게 만드는데 이해를 해야 하는 영역이 제대로 구분이 되어져 있다고 생각합니다. 그럼 각 ..
전체 설정 순서 `Jenkins`는 `Java` 기반으로 작동하는 오픈소스입니다. 그러기에 자바를 우선 설치를 해줍니다. 이후, `Jenkins`를 `Docker` 기반으로 작동 시켜야 하기 때문에 `Docker`를 설치 해줍니다. 작동 중인 `Jenkins`에 필요한 설정들을 시작합니다. Ubuntu 설정 `apt`를 최신버젼을 가져올 수 있도록 먼저 `update`를 해줍니다. sudo apt update `Jenkins`는 자바 기반으로 작동이 되기에 `Java`를 설치해줍니다. sudo apt install -y default-jdk `Ubuntu`에 `Java`가 제대로 설치되었는지 확인 해줍니다. java -version openjdk version "11.0.20.1" 2023-08-24 O..
Docker Compose 단일 서버에서 여러 컨테이너를 프로젝트 단위로 묶어서 관리해주게 해주는 기능을 말합니다. `docker-compose.yml` 파일을 통해 명시적으로 관리가 가능합니다. 장점 프로젝트 단위로 도커 네트워크 볼륨 관리가 용이함. 프로젝트 내 서비스 간 의존성 정의 가능함. 프로젝트 내 서비스 디스커버리 자동화 가능. (서비스 도메인으로 호출이 가능) 손 쉬운 컨테이너 수평 확장 가능. 용어 프로젝트(Project) 도커 컴포즈에서 다루는 워크스페이스 단위를 의미합니다. 하나의 `yml` 파일이라고 생각하면 됩니다. 그리고 프로젝트는 함께 관리하는 서비스 컨테이너의 묶음이기도 하고 기본 도커 네트워크를 생성합니다. 서비스(Service) 도커 컴포즈에서 컨테이너를 관리하기 위한 중..
Docker 이미지를 경량화하는 데는 여러 가지 방법이 있습니다. 경량화를 통해 이미지 크기를 줄이고 실행 속도를 향상시킬 수 있습니다. 아래에는 Docker 이미지 경량화를 위한 몇 가지 일반적인 방법을 설명합니다 필요한 패키지 및 파일만 추가 `node.js`의 경우 설치한 `module`이 저장되는 `node_module`을 이미지화 하는데 제외하여 관리하는 것이 경량화 방법 입니다. 컨테이너 레이어 수 줄이기 `Dockerfile` 을 실행시 작동되는 `run` 명령어들을 `&&` 연산자를 통해 하나의 `RUN` 명령어로 변경하여 경량화를 할 수 있습니다. RUN \ apk add --no-cache bash curl git && \ git clone https://github.com/course..