서버와 가상화

박상준·2024년 4월 13일
0

면접지식

목록 보기
31/32
post-custom-banner

서버 아키텍처의 이해

  • 네트워크 상에서 클라이언트의 요청을 처리하고 데이터를 제공하는 서버의 구조적 설계를 의미함.
  • 서버의 성능, 확장성, 보안, 관리 용이성 등을 결정하는 중요한 요소
  • 가상화 기술은 - 서버 아키텍처를 더 유연하고 효율적으로 만든다.

    서버 아키텍처 기본적인 구조

    1. 단일 서버 아키텍처

      • 정의
        • 모든 클라이언트의 요청을 단일 서버가 처리하는 가장 간단한 형태의 아키텍처이다.
      • 장점
        • 구축과 관리가 쉽다
      • 단점
        • 서버에 과부화가 발생하기 쉽다.
        • 서버가 다운되면 전체 시스템에 마비된다.
      • 적용 예시
        • 소규모 웹사이트, 개인 블로그 등 트래픽이 많지 않은 어플리케이션에서 사용
    2. 분산 서버 아키텍처

      • 정의
        - 여러 서버가 클라이언트의 요청을 분산하여 처리하는 구조이다.
        - 로드 밸런서를 통해 요청을 적절히 분배한다.
      • 장점
        - 고가용성
        - 확장성
        - 부하 분산
      • 단점
        - 관리가 어려움
        - 서버 비용이 증가할 수 밖에 없음.
      • 예시
        - 대규모 웹
        - 온라인 게임
        - 클라우드 서비스

      가상화와 서버 아키텍처

    • 서버 가상화

      • 정의
        • 하나의 물리적 서버 위에 여러 개의 가상 서버(가상 머신)를 생성하여 운영하는 기술
      • 장점
        • 자원 활용도를 극대화한다.
        • 서버의 배포와 관리가 용이함
        • 가상 머신 간 격리로 보안성이 향상
      • 예시
        1. 개발 공통 환경의 구축
        2. 테스트 환경 분리시
        3. 다양한 서비스 독립적 운영
    • 가상화 기술 활용
      1. 리소스 풀링
      - 여러 물리적 서버의 자원을 통합하여 가상화된 리소스 풀을 생성.
      - 필요에 따라 가상 머신에 동적으로 할당한다.

      리소스 풀링?

      • 리소스
        • 컴퓨터나 서버에서 사용할 수 있는 모든 것들을 의미한다.
        • 컴퓨터의 메모리, 저장공간, 처리 능력(컴퓨터가 일을 처리하는 속도) 등이 리소스에 해당한다.
      • 풀링
        • 모으다 의 의미이다.
        • 여러 컴퓨터나 서버가 가진 리소스를 하나로 모아서, 필요할 때 그 공동의 리소스 를 사용한다.
      • 즉, 여러 컴퓨터 중에 몇대가 쉬고 있는 경우, 어떤 컴퓨터가 일을 할때 쉬는 컴퓨터의 리소스를 일하는 컴퓨터에게 리소스를 전달하는 것을 의미함.
      1. 빠른 배포와 복구
        • 가상 머신의 스냅샷과 클론 기능으로 서버의 배포와 복구를 빠르게 수행할 수 있다.
      2. 부하 분산과 확장성
        • 가상화를 통해 서버의 부하를 동적으로 분산.
        • 시스템의 확장성을 높일 수 있음.

      가상화를 통한 서버 아키텍처 최적화

    • 사례

      • 클라우드 서비스
        • 클라우드 서비스의 경우 다양한 고객의 요구사항을 충족시키기 위해 높은 확장성과 유연성이 필요함
        • 서버 가상화와 클라우드 컴퓨팅 기술 결합하여, 고객별로 격리된 가상 머신을 제공.
        • 고객은 필요에 따라 자원을 즉시 확장하거나 축소할 수 있다, 서비스 제공업체는 자원 활용도를 극대화하고 운영 비용을 절감가능하다.

가상화 및 컨테이너화의 고급 개념

가상화

  • 물리적인 하드웨어 리소스를 추상화하여 여러 운영 체제가 동시에 실행될 수 있도록 하는 기술
  • 이를 통하여
    • 하드웨어 사용 효율성을 높이고,
    • 시스템 관리 간소화 가능
  • 예시
    • VMware , VirtualBox 같은 가상화 소프트웨어를 사용하여 한 대의 물리적 서버에서 여러 개의 가상머신(VM) 을 실행 가능
    • 각 VM 은 독립적인 OS 를 가지고
    • 서로 다른 어플리케이션을 실행하는 데 사용될 수 있다.
    • 한 서버에서 Linux 기반
    • 다른 서버에서 Windows 기반의 DB 서버를 동시에 운영가능

컨테이너화

  • 가상화의 일종인데, OS 수준에서의 가상화를 제공한다.
  • 컨테이너는 어플리케이션과 그 종속성을 패키지화 - 어떤 환경에서도 일관된 실행을 보장한다.
  • 예시
    • Docker 는 가장 널리 사용되는 컨테이너화 플랫폼 중 하나임.
    • Docker 를 사용하면 개발자는 어플리케이션, 라이브러리 등을 하나의 컨테이너 이미지로 패키지화가 가능하다.
    • 해당 이미지는 다양한 환경( 개발자의 로컬 컴퓨터, 테스트 서버, 프로덕션 환경 등) 에서 동일하게 실행된다.
    • 예를 들어, Python 기반의 웹 어플리케이션을 Docker 컨테이너로 패키지화하는 경우 Python 과 모든 필요한 라이브러리가 포함되어 어디서나 동일하게 실행이 가능하다.

가상화 vs 컨테이너화

  • 자원의 격리 수준
    • 가상화는 HW 수준에서 자원을 격리하여, 각 가상 머신에 할당
    • 컨테이너는 OS 수준에서 격리, 모든 컨테이너가 동일한 호스트 OS 의 커널을 공유.
      • 컨테이너는 VM 보다 가볍고 빠름.
  • 이식성
    • 컨테이너의 경우 APP 과 그 환경을 함께 패키지화.
    • 다양한 환경 간 이식성이 뛰어남
  • 관리
    • 컨테이너의 경우 MSA 같은 현재 개발 패러다임을 편리하게 사용할 수 있도록 도움.
profile
이전 블로그 : https://oth3410.tistory.com/
post-custom-banner

0개의 댓글