dev-course day73

2rlokr·2025년 6월 20일

dev-course

목록 보기
42/43
post-thumbnail

오늘 배운 점

CI/CD

지속적으로 프로젝트를 통합하고 배포할 수 있도록 하는 것으로, 소프트웨어 개발 및 배포 과정을 자동화하여 개발 및 출시 주기를 단축시키는 방법론이다.


CI (Continuous Integration, 지속적 통합)

프로젝트를 개발할 때 구성원 간 협의된 일정과 규칙으로 지속적인 통합을 진행한다면, 각자 진행한 결과물을 일관성있게 관리할 수 있다. 즉, 프로젝트에서 여러 기술자들이 만든 결과물을 하나로 합치는 것이다.

CD (Continuous Delivery, 지속적 배포)

CI를 통해 통합된 코드를 자동으로 테스트하고, 준비가 되면 특정 환경에 배포하는 것을 자동화하는 것이다. 배포는 사용자가 직접 진행할 수도 있고(Continuous Delivery), 자동으로 진행될 수도 있다. (Continuous Deployment)

파이프라인

한 데이터 라인의 출력이 다른 한 데이터 라인의 입력으로 들어가게 되는 구조이다. 소프트웨어를 개발, 빌드, 테스트, 배포하는 일련의 단계를 체계적으로 연결한 워크플로우를 의미한다.

  • 각 단계가 순차적으로 진행되며, 자동화를 통해 효율성과 품질을 높인다.

다중 환경 구성 (Multi-environment setup)


DevOps

  • 소프트웨어의 개발, 운영을 합성한 단어로, 개발과 운영의 경계를 허물고, 자동화된 방식으로 빠르고 안정적으로 서비스를 전달하는 문화이다.
  • 개발자와 운영팀 간의 소통, 협업, 통합을 강화하여 소프트웨어의 개발부터 배포, 운영까지의 과정을 자동화하고 최적화하는 문화이자 접근 방식이다.

가상화 기술

가상화는 컴퓨터에서 컴퓨터 리소스의 추상화를 일컫는 광범위한 용어이다.

가상화 (Virtualization)

물리적인 하나의 컴퓨터의 자원을 분할하여 사용하는 것처럼, 가상화라는 것은 물리적으로 존재하는 자원을 논리적으로 나누거나 통합하여 활용할 수 있게 만드는 기술을 의미한다.

  • 하드웨어 자원의 효율성을 극대화하고, 유연한 시스템 구성을 가능하게 한다.
  • 비용 절감과 운영의 단순화를 제공하는데 핵심적인 기술로 사용된다.
  • 가상화는 물리적인 하드웨어 위에 가상 머신(Virtual Machine, VM)을 생성하여 각각 독립된 환경에서 운영체제를 실행할 수 있도록 한다. 이를 통해 하나의 물리적 서버에서 여러 운영 체제와 애플리케이션을 동시에 실행할 수 있다.

하이퍼바이저(Hypervisor)

하이퍼바이저는 가상화를 구현하는 핵심 기술로, 물리적 하드웨어와 가상 머신 사이에서 자원의 할당과 관리를 담당하는 소프트웨어이다. 가상 머신 모니터 (Virtual Machine Monitor, VMM)이라고도 불린다.

  • 여러 운영 체제를 하나의 물리적 하드웨어에서 동시에 실행할 수 있으며, 각 운영체제는 독립적인 환경에서 동작한다.
  • 하이퍼바이저는 물리적 하드웨어 자원을 추상화하여 가상머신이 이를 사용할 수 있도록 동작한다.
  • 이를 통해 가상 머신은 물리적 하드웨어에 직접 접근하지 않고도 독립적으로 운영 체제를 실행할 수 있게 된다.

유형

1형 하이퍼바이저(Type1 Hypervisor)

물리적 하드웨어 위에서 직접적으로 실행되는 하이퍼바이저이다.


  • 물리적인 하드웨어 위에서 직접적으로 실행된다는 것의 의미는 하이퍼바이저 소프트웨어가 운영체제를 거치지 않고 하드웨어와 직접 소통한다는 것을 의미하며, 이로 인하여 성능 및 안정성이 상대적으로 우수하다.
  • 물리적인 장치와 직접 소통하는 형식이기 때문에 1형 하이퍼바이저는 호스트 운영체제를 대신할 수 있다.
  • 예) Microsoft - Hyper-V, VMware - vSphere

2형 하이퍼바이저(Type2 Hypervisor)


  • 호스트 운영체제 (Host OS)에서 실행되는 하이퍼바이저이다. 호스트 운영체제에서 실행되기 때문에 환경 설정 및 관리가 상대적으로 용이하다.
    • 호스트 운영체제(OS) : 하드웨어에 직접적으로 설치된 운영체제
    • 게스트 운영체제(OS) : 호스트 운영체제와 별개로 설치되는 운영체제
  • 물리적인 장치에서 바로 실행되는 1형 하이퍼바이저와 대비해 상대적으로 성능이 떨어질 수 있다.
  • 예) VMware - Workstation, Oracle - VirtualBox

가상 머신 (Virtual Machine, VM)

물리적인 컴퓨터 시스템 위에 소프트웨어적으로 구현된 컴퓨터 시스템이다. 가상머신은 마치 독립적인 컴퓨터가 있는 것과 같은 환경을 제공한다. 이를 통해 단일 하드웨어에서 여러 운영체제와 애플리케이션을 동시에 실행시키는 효과를 얻을 수 있다. 이러한 가상머신은 하이퍼바이저를 기반으로 동작한다.

  • 하드웨어의 CPU, 메모리, 저장 장치, 네트워크 인터페이스 등의 하드웨어 자원을 소프트웨어적으로 가상화하여 독립적인 컴퓨팅 환경을 제공한다.
  • 각각의 가상머신은 자체적인 운영체제와 애플리케이션을 포함할 수 있다.
  • 호스트 운영체제와 완전히 분리된 환경에서 동작합니다.

리눅스 컨테이너(Linux Container, LXC)

리눅스 컨테이너는 가상화를 구현하는 기술 중 하나로, 운영 체제 수준에서 애플리케이션과 그 실행 환경을 격리하여 실행할 수 있도록 하는 기술이다. 전통적인 가상화 기술과는 달리 하이퍼바이저를 사용하지 않고, 단일 운영 체제 커널(Kernal)을 공유하면서도 각 애플리케이션이 독립적으로 실행될 수 있게 해준다.


  • 가상 머신과 달리 전체 운영체제를 가상화하지 않고, 호스트 운영 체제의 커널을 공유하면서 프로세스가 실행되는 공간을 격리한다.
  • 각각의 컨테이너는 독립적인 파일 시스템, 프로세스, 네트워크 등을 가진 것과 같이 동작한다.
  • 리눅스 계열의 운영체제에서만 사용할 수 있는 방식이다.

WSL(Windows Subsystem for Linux)

WSL은 Windows 운영 체제에서 Linux 운영체제를 실행할 수 있도록 지원하는 기능이다. WSL은 Windows와 Linux 환경을 동시에 활용해야 하는 경우 사용할 수 있다.

  • WSL은 시스템 호출(System Call)을 번역하는 방식으로 동작하여 Windows 커널과 Linux 사용자 공간 간의 호환성을 제공했다.
  • 이 방식에서 조금 더 발전되고 개선된 WSL2는 실제 Linux 커널을 포함하여 가상화 기술을 기반으로 동작한다.
  • WSL2는 Hyper-V를 활용하여 경량화된 가상머신을 실행하여, 기존 WSL보다 더 나은 성능과 완전한 호환성을 제공한다.

느낀점

3차 프로젝트가 끝이났다!!! 3차 프로젝트 때 맡았던 CI/CD를 개념적으로 더 배울 수 있겠다는 생각에 좋다 ! 한 번 해봤으니까 더 잘 이해되지 않을까 생각한다. :)

4차 프로젝트 전에 꼭 배워보고 싶었던 클라우드 기술을 배우니까, 열심히 잘 이해하면서 들어봐야겠다..!

0개의 댓글