1. AM의 정의🔍

반대말은 'PM'
  • Application Modernization
  • 기존 어플리케이션 내용을 현대화하는 과정을 일컫는다.
  • 대표적인 구현 개념으로 클라우드 네이티브가 있다.

    1-1. 클라우드 네이티브란?

    • 클라우드 환경에 최적화되어 동작할 수 있는 어플리케이션을 개발하는 과정
  • 어플리케이션 현대화 과정에서 다양한 변화가 발생한다.

2. 인프라의 변화☁️

  • 온프레미스에서 클라우드로
항목온프레미스클라우드
관리 방식전산실 서버 직접 관리IT 자산을 대여하여 네트워크 기반으로 관리
장점데이터 보안 및 물리적 제어 용이비용 효율성 및 확장성
기술 요소서버 하드웨어인터넷, 가상화

2-1. 온프레미스(On-premise)

  • 기존에는 회사 내 전산실에서 랙에 서버를 꽂아 안정적으로 동작할 수 있게 관리하는 방법을 사용
  • 이후 관리비 절감을 위해 외부(데이터 센터 등)에 위탁하는 온프레미스 환경으로 변화

2-2. 클라우드(Cloud)

  • 온프레미스에서 나아가 네트워크 어딘가에 존재하는 IT 자산을 빌려쓰는 개념인 클라우드 개념 발생
  • 내가 사용한 만큼만 비용을 지불하면 되므로 비용 효율적
  • 클라우드를 구성하는 기술 요소에는 인터넷가상화가 있다.

    2-2-1. 인터넷

    • public network infra
    • 인터넷만 있으면 장소에 구애받지 않고 클라우드 IT 자산을 빌려 쓸 수 있다.

    2-2-2. 가상화

    • virtualization
    • 하드웨어를 소프트웨어로 표현하여 File로 관리할 수 있다.
    • 가상화의 장점
      ✅쉽게 복사하고 이동 가능
      ✅검토(inspection) 가능
      ✅버전 관리 가능

    2-2-3. IaC

    • Infrastructure as Code
    • 인프라를 프로그램 형식으로 자동화하여 위의 장점들을 극대화해준다.

3. 소프트웨어의 변화🖥️

  • 모놀리식에서 MSA로

    3-1. 모놀리식(Monolithic)

    • 모든 서비스를 단일 어플리케이션으로 빌드하는 방식
    • 단위 모듈은 정상 작동 됐지만 통합 빌드 시 오류가 발생하는 경우가 생김
    • 빈번한 배포 어려움

    3-2. MSA(Micro Service Architecture)

    • 독립적인 서비스 단위로 구성해 서로 연계하는 방식
    • 쉽게 수정하고 반영 가능하여 비지니스 변화를 적극적으로 수용함
    • 서비스별로 조직에 맞는 개발 도구와 환경을 채택하여 사용 가능

4. 방법론🧑‍💻

  • 어플리케이션 현대화 과정에서 발생하는 변화들을 뒷받침 하기 위해 다양한 방법론이 제시되었다.
  • 대표적인 방법론으로 애자일이 있다.

    4-1. 애자일(Agile)

    • 고객의 요구사항을 적극적으로 수용하고 반영한다.
    • 이로 인해 고객은 만족하고 개발자는 발전하는 환경이 형성된다.

5. 컨테이너와 자동화🚢

  • 변화를 받아들이기 어려웠던 개발 환경에서 변화에 적극적인 환경으로 발전했다.
  • 또한 개발한 내용을 쉽게 적용하고 배포하기 위한 기술력이 필요해졌다.

    5-1. 컨테이너

    • 배포(Deploy)를 용이하게 하는 기술
    • 사용자가 쉽게 어플리케이션을 사용할 수 있도록 실행 환경과 소스 코드를 결합하여 배포한다.
    • 이를 위해 가상화를 사용하면 가상 머신을 제어하기 위한 운영체제가 필요하며, 이때 사용되는 기술이 바로 컨테이너이다.
    • 컨테이너는 호스트가 가지고 있는 운영체제를 빌려 쓰는 개념이다.
    • 하나의 가상 머신에서 여러 사용자가 작업할 때 충돌이 발생하지 않도록 구분해주는 격리 기술이 필요하다.

    5-2. CI/CD

    • 적용을 용이하게 하는 기술
    • 변경된 소스 코드를 자동으로 반영해주는 자동화 기술이다.
    • 자동화를 사용할 경우 품질에 대한 의구심이 들 수 있으며, 이를 해결하기 위해 애자일 방법론 중 하나인 TDD가 제시된다.

6. 정리🔑

  • AM에서 소프트웨어를 개발하기 위한 클라우드 네이티브 핵심 기술
    • 독립된 작은 서비스 단위로 개발 ➡️ MSA🧩
    • 배포에 용이하도록 컨테이너화 ➡️ 컨테이너📦
    • 자동화된 프로세스 ➡️ CI/CD⚙️
    • 클라우드 환경에 배포 ➡️ 클라우드☁️

0개의 댓글