Notice
Recent Posts
Recent Comments
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Archives
Today
Total
관리 메뉴

SYDev

[마이크로서비스프로그래밍] Lecture03 - Infrastructure & Virtualization 본문

3학년 2학기 전공/마이크로서비스프로그래밍

[마이크로서비스프로그래밍] Lecture03 - Infrastructure & Virtualization

시데브 2024. 9. 13. 17:38
경희대학교 이성원 교수님의 마이크로서비스 프로그래밍 수업을 기반으로 정리한 글입니다.

 

Learning Objective 

  • On-premises vs Cloud Computing
  • IT infrastructure
  • How to make infrastructure
  • Mutable and immutable infrastructure 

 

On-Premises(On-prem)

  • IT system과 Software를 자체적인 물리적인 공간에 직접 설치하고 운영하는 방식
  • private cloud computing과 유사

Source: https://www.peoplehr.com/blog/index.php/2015/06/12/saas-vs-on-premise-hr-systems-pros-cons-hidden-costs/

-> hardware에 대한 지식 없이, 그저 서비스만 운영하고 싶다? -> cloud computing이 나을 수 있다.

-> 보안이나, 특정 hardware에 대한 관리를 직접 수행해야만 한다? -> on-premises

 

Source: https://medium.com/@routdeepak/a-data-engineers-perspective-on-iac-51705fa670d9

 

  • Pet model -> on-premises 
  • Cattle -> cloud servers

 

Pets Model 

  • every server is given a nice name
  • pets are unique, lovingly hand raised
  • but, 서버의 양이 많아질수록 각 서버의 이름과 IP 주소 등을 외우기 상당히 불편해짐

Cattle Model

  • servers are given names as incremental numbers ...
    • server001, server002, ...
  • 서버에 문제가 발생하면, 해당 서버를 새로운 것으로 교체 가능 -> 모두 같은 소모품으로 인식

 

Cloud Models

 

  • SaaS -> 모든 것을 rent
  • PaaS -> 개발 환경만 rent
  • IaaS -> 가짜 infrastructure를 빌림
  • On Premises -> 어떤 것도 빌리지 않고, 직접 구현

 

-> resources를 적게 빌릴수록 manageability가 늘어남

 

Infrastructure

  • Hardware & Network
  • Operating System(OS)
  • Middleware -> OS 위에서 사용자가 만드는 application에 도움을 주는 역할, os와 application 사이에 위치

 

1. Hardware & Network

Server

  • Central Processing Unit(CPU)
  • Memory
  • Storage

Web Server

  • Client에 web pages를 저장, 처리, 전달한다.
  • HTTP를 사용하여 server와 client 사이 통신
  • 전달되는 pages는 대부분 HTML documents (이미지, style sheets & scripts를 포함)

 

Database Server

  • database service를 제공하는 database application을 수용하는 server
  • SQL Server
    • data가 tables에 저장됨
    • columns and rows로 구성
    • ex) MySQL, Microsoft SQL server, ...
  • NoSQL Server
    • table 형태가 아닌 구조를 가짐 -> 비정형 데이터

 

2. Operating System

Linux

  • microsoft를 제외한 거의 모든 data center의 OS

Source: https://blog.digilentinc.com/demystifiying-the-linux-kernel/

 

3. Middleware

  • application이 필요로 하지만, os에서 제공하지 않는 기능들을 제공하는 computer software
  • 개발할 때 사용하는 library, framework

 

Architecture

 

Deploying at Scale

  • 관리 용이성, 신뢰성, 원격 서버의 powerful technology가 보장된다면(cloud computing), IT manager들이 수백, 수천 개의 machines를 배포할 수 있다.
  • 그렇다면 이 모든 machines를 어떻게 관리하고 유지할 것인가? 
  • patches, updates, fix security gaps를 어떻게 수행할 것인가?

1. How to set up Infrastructure?

  • Infrastructure를 구성하는 것은 매우 manual한 process이다
  • physically rack and stack servers -> hardware 구성 manually -> hardware에 application 배포

 

2. Drawbacks to this Process

  • 필요한 hardware를 offline으로 얻는 데에 많은 시간이 걸림 -> 특정 기능에 특화된 hardware를 얻기 위해서는, 몇 개월이 걸릴 수 있다.
  • hardware에 맞춰 전문가를 고용해야 함 -> Network Engineers, Storage Engineers, ...
  • hardware가 위치할 부동산이 필요함 
  • high traffic이 발생했을 때, 이에 맞춰 server의 scale을 늘리는 데에 많은 시간이 걸림
  • 각 servers를 다른 사람들이 구성하기 때문에, setups가 일관적이지 않을 수 있음

 

Maintain Infrastructure in Cloud Computing

1. Infrastructure as Cods (IaC)

  • Infrastructure as Code(IaC)는 Cloud, Microservices, Continuous Delivery의 시대에서 IT infrastructure를 관리하는 접근법이다.
  • Infrastructure as Code: source code를 사용하여 IT infrastructure를 공급하고 관리하는 접근법
  • servers, databases, networks 등을 software로서 취급

- Benefits 

  • Speed, Simplicity
  • 지속성
  • Risk의 최소화
  • software 개발의 효율성 증가
  • Cost savings

2. Mutable Infrastructure

Mutable Infrastructure

  • 전달하는 목적의 요구에 맞도록, Infrastructure는 연속적으로 update, patch, tune된다.
  • updates를 진행할수록 -> each server는 unique한 변화를 가짐. -> 다른 service들과 약간의 차이가 생김 >> configuration drift
  • 이런 변화는 진단하거나, 재생성하기 매우 어려움
Configuration Drift: 시간이 흐르면서 system, application, server, infrastructure, hardware 등의 실제 구성이 의도하거나 원하는 구성과 달라지는 현상
출처: https://nauco.tistory.com/93 [UNDERSTANDING:티스토리]

 

Immutable Infrastructure

  • IT resources를 배포하는 과정에서, components를 변경하기 보다는 교체하는 방식
  • 변화가 발생 -> application or services는 효율적으로 재배포됨

Source: https://www.slideshare.net/LiorKamrat/infrastructure-as-code-getting-started-concepts-tools

-> Immutable Infrastructure 방식은 instance에 변화가 생기면, destroy 후에 새로 provision한다.

 

Benefits of Immutable Infrastructure

  • IT complexity, Failures가 줄어듦
  • Troubleshooting이 쉬워짐
  • 변화를 tracking할 필요가 없어짐 

 

 


참고자료

 

온프레미스(On-premises)란?

온프레미스(On-premises)란? 온프레미스(On-premises)는 IT 시스템과 소프트웨어를 자체적인 물리적인 공간에 직접 설치하고 운영하는 것을 의미합니다. 즉, 클라우드와 달리 자체적으로 보유한 서버에

tech1.tistory.com