공부 기록장
클라우드, 리눅스, 컨테이너 본문
클라우드
클라우드 컴퓨팅이란?
서버, 데이터베이스, 인공지능 등의 IT 리소스를 인터넷을 통해 온디맨드(on-demand)로 제공하고,
필요에 따라 유연하게 사용할 수 있게 하는 기술
클라우드 네이티브란?
클라우드 컴퓨팅 환경에서 어플리케이션을 설계, 개발, 배포, 운영하는 `방식`을 의미
마이크로서비스 아키텍처, 컨테이너화, 데브옵스, 지속적 통합/배포(CI/CD), 동적 오케스트레이션 등이 있다
⇒ 클라우드 네이티브는 클라우드 컴퓨팅의 하위 개념 (클라우드 네이티브 ⊆ 클라우드 컴퓨팅)
⇒ 클라우드 컴퓨팅은 클라우드 네이티브 애플리케이션을 위한 인프라와 자원을 제공
클라우드를 사용하는 이유
- 유연한 확장 : 리소스 사용량, 네트워크 트래픽 기준으로 사용량에 알맞게 확장/축소 가능
- 비용 절감 : 하드웨어를 직접 구매해 인프라를 구성하는 온프레미스(On-premise) 환경과 달리, 사용한 만큼만 지불하여 비용 절감 효과
- 효율적 관리 : 인프라 유지 보수를 직접하지 않고 클라우드 벤더사에서 담당하기 때문에, 제품 개발에 집중 가
위험성
- 데이터 보안 : 데이터 유출 및 해킹의 위험 ↑
- 서비스 가용성 : 클라우드 벤더사에 의존하게 되기 때문에, 클라우드 벤더사에 문제가 생기면 그대로 서비스 문제로 연결됨
- 비용 관리의 어려움 : 효과적으로 관리하지 않으면 오히려 비용을 과하게 지불하게 되는 경우 발생 가능
온프레미스 환경을 사용하는 경우
보안에 민감한 서비스 : 금융권, 의료, 정부 사업
낮은 지연 시간이 필요한 서비스 : 게임 산업, 금융 서비스, 군사 산업
⇒ 단점 보완을 위해, 하이브리드 클라우드나 멀티 클라우드 같은 다양한 형태의 클라우드 사용 사례들 생겨나고 있다!
ISA와 CPU 아키텍처
ISA(Instruction Set Architecture)란?
프로세서가 이해하고 실행할 수 있는 명령어 집합으로,
명령어의 유형, 사용할 수 있는 레지스터, 메모리 접근 방식, 데이터 타입, 주소 모드 등이 포함
CPU 아키텍처란?
"마이크로아키텍쳐(microarchitecture)"로도 부르며,
주어진 ISA를 구현하는 구체적인 방법으로, CPU의 내부 구성 요소, 데이터버스, 레지스터, ISA를 포함하는 개념이다
⇒ ISA는 "무엇을 할 수 있는가", CPU 아키텍처는 "어떻게 실행하는가"를 결정
⇒ 엄밀하게는 약간의 차이가 있지만, 상호 교환 가능한 용어
ARM과 x86
ARM ISA- 일반적으로 간단하고 크기가 작은 명령어 집합을 사용- RISC(Reduced Instruction Set Computing) 아키텍처의 특징을 갖음 (RISC의 대표적인 예)- 효율성이 높고, 간단한 명령어로 인해 하드웨어 복잡성↓
x86 ISA- 더 복잡하고 기능이 풍부한 명령어 집합을 사용- CISC(Complex Instruction Set Computing) 아키텍처의 특징을 갖음 (CISC의 대표적인 예)- 다양한 작업을 단일 명령어로 수행- 복잡한 명령어 처리를 위해서는 복잡한 하드웨어 구조가 필요
⇒ 물리적 형태로 존재하지 않고, 마이크로아키텍처 설계의 근간이 되는 명령어 집합을 의미
⇒ 해당 아키텍처가 실제 물리적인 칩으로 구현될 때, 비로소 물리적 형태를 갖게 된다!
Processing Unit
CPU(Central Processing Unit): 컴퓨터의 중앙 처리 장치로 다양한 일반적인 작업을 수행: 범용성 다중 작업 처리 장치로 대부분의 컴퓨팅 작업에 적합한 속도 제공
GPU(Graphics Processing Unit): 주로 그래픽 렌더링 및 병렬 처리가 필요한 작업을 수행: 게임, 3D 모델링 등의 고성능 그래픽 작업이나 딥러닝의 대규모 데이터 세트에서의 학습 및 추론에 사용
TPU(Tensor Processing Unit): 구글이 개발한 딥러닝 모델을 위한 전용 프로세서: 매우 높은 연산 능력을 제공하여 대규모 딥러닝 모델의 학습 및 추론 속도를 크게 향상함: GPU보다 전력 효율이 높음
NPU(Neural Processing Unit): 인공 신경망 작업을 가속화하기 위해 설계된 프로세서: 인공지능과 머신러닝 작업에 특화: 모바일 기기 등에서 실시간으로 AI 기능 수행 가능
리눅스와 컨테이너 기술의 배경
리눅스(Linux)란?리눅스는 기본적으로 커널을 의미커널은 운영 체제의 핵심 부분으로서, 하드웨어와 소프트웨어 간의 상호작용을 관리하고,시스템 자원을 효율적으로 배분하며, 기본적인 시스템 서비스를 제공한다
리눅스 운영체제란?리눅스 커널과 함께 배포되는 다양한 소프트웨어, 도구, 사용자 인터페이스, 라이브러리 등을 포함한 전체 패키지이러한 전체 패키지를 "리눅스 배포판"이라고 부르며, 우분투, 페도라, 데비안, 센트OS 등이 있다
리눅스 운영체제의 멀티 유저 특성
- 본질적으로 여러 사용자가 하나의 시스템에서 동시에 작업할 수 있는 환경 지원- 사용자는 자신의 환경과 파일, 프로세스 등을 독립적으로 관리할 수 있다
컨테이너 기술
- 리눅스의 멀티 유저를 지원하는 특성을 확장하여, 프로세스, 리소스 등을 격리된 환경에서 사용할 수 있도록 제공함- 나아가, 클라우드 컴퓨팅과 마이크로서비스 아키텍처를 구성하는데 있어 중요한 역할을 함- ex. Docker, Kubernetes 등
'카카오테크 부트캠프 > 강의' 카테고리의 다른 글
효율적인 소프트웨어 배포를 위한 CI/CD와 DevOps 전략 (0) | 2024.08.03 |
---|---|
모델의 효율적인 학습과 배포 : 파인튜닝, 양자화, 서빙 (0) | 2024.07.31 |
언어 모델의 종류와 평가, RAG 아키텍처 (0) | 2024.07.30 |
LLM과 프롬프트 엔지니어링(Prompt Engineering) (0) | 2024.07.26 |
PyTorch, Seq2Seq, 오토인코더, GAN, 하이퍼 파라미터 튜닝의 이해 (2) | 2024.07.24 |