이번에 제대로 OS 파헤치기 및
SRE를 위한 한 걸음을 내딛고자 공부해보게 되었다.
만들어 내고자하는 목표는 아래와 같다.
핵심 목표
- 리눅스 커널 패치 & 롤백 자동화
- 무중단 업데이트 & 장애 발생 시 자동 복구
- 보안 패치 자동 적용 및 실시간 모니터링
- 대규모 서버 클러스터에서도 안정적으로 운영 가능하도록 설계
프로젝트 도입 이전 아키텍처 고민 포인트
: 어떤 경우에 해당 프로젝트가 요구되며, 어떤 검증까지가 필요한 가를 고려하였습니다.
| 📗 Immutable Infrastructure / 불변 인프라 개념 수용
- AWS, GCP, Azure 같은 클라우드 플랫폼은 새로운 인스턴스를 띄우고, 기존 인스턴스를 제거하는 방식을 선호함
- AWS ECS, Fargate, Lambda 같은 서버리스 환경에서는 커널 패치 자체가 필요 없음
- 클라우드에서는 커널을 직접 패치하기보다는 최신 AMI를 새로 배포하는 게 일반적
| 📗 커널 패치보다 재생성 방식이 더 안전할 때
- 클라우드에서 새로운 VM을 띄우고 기존 VM을 종료하는 방식이 더 빠르고 안정적임
- Auto Scaling Group (ASG)을 활용하면 서버를 무중단으로 교체하는 방식으로 운영 가능
===> "왜 굳이 위험하게 커널 패치를 해야 하는가?"
| 📗 커널 패치 실패 시 복구가 어렵다
- Bare Metal 환경에서는 커널 패치 후 롤백이 가능하지만,
- 클라우드 VM에서는 커널 패치 실패 시, VM 자체가 부팅되지 않는 상황이 발생할 가능성이 높음
====> 클라우드에서는 이런 문제를 방지하기 위해 "VM Snapshot → 새로운 인스턴스 배포" 방식을 선호
* Immutable Infrastructure
- https://www.digitalocean.com/community/tutorials/what-is-immutable-infrastructure
- https://www.youtube.com/watch?v=HAqnroZAoH4
- http://www.opennaru.com/openshift/immutable-infrastructure-vs-old-infra/
* 커널 패치 관련
- https://cloud.google.com/compute/docs/troubleshooting/kernel-panic?hl=ko
기술 선정
리눅스 커널의 자동 패치 및 롤백 시스템 구축을 위해 OpenStack 환경을 기반으로
다음과 같은 핵심 기술들을 선정했다!
사실은 네트워크/가상화 쪽으로 어떻게 많이 활용해볼 수 있을까라는 고민으로
도전해보고 싶은 기술을 많이 넣었다
| OpenStack 선택 이유
OpenStack은 가상화 환경을 유연하게 관리할 수 있는 오픈소스 플랫폼으로, Private Cloud 환경 구축에 적합
가상 환경을 자유롭게 배포, 관리, 삭제할 수 있는 API와 대규모 서버 클러스터 운영에 적합한 기능들을 제공
이번에 커널 패치를 통한 가상화에 대한 개념과 프라이빗 네트워크 운영을 통한 네트워크 구조를 확실히 잡고자 함
=> 아직 찬찬히 뜯어보는 중
| 가상화 시스템 구축
- KVM/QEMU: 가상 머신 생성 및 관리의 기본 하이퍼바이저 기술
- OpenStack Nova & Neutron: VM의 자동 배포, CPU/RAM 조정, 네트워크 설정(IP 할당 및 접근 제어) 자동화
- Terraform & Ansible: 인프라 자동화 및 가상 환경 설정 관리, 반복적이고 일관된 환경 배포 가능
- Kubernetes : 컨테이너 오케스트레이션 및 VM 환경 관리 효율성 증가
- Docker: 서비스 및 애플리케이션 컨테이너화로 빠른 배포 및 관리
| 사용자 인터페이스 및 API 구성
- React (Next.js): 가상 환경 신청, 상태 조회 등 사용자 친화적 웹 인터페이스 제공
- FastAPI/NestJS: 빠르고 확장 가능한 백엔드 API 구축
- PostgreSQL & Redis: 신청 내역 관리 및 상태 조회의 데이터베이스 관리, 고성능 캐싱 및 처리
| 모니터링 시스템
- Prometheus & Grafana: 클러스터 전체 및 개별 가상 환경의 CPU, RAM 및 네트워크 트래픽 실시간 모니터링
- Node Exporter: 개별 가상 환경 내에서 세부 리소스 모니터링과 서비스 상태 체크를 가능하게 함
| 실시간 데이터 업데이트
- WebSocket & React Query: 사용자 인터페이스에서 가상 환경 상태 변경을 실시간으로 반영
- Grafana API 연동: 실시간 모니터링 데이터를 시각적으로 사용자에게 제공
| CI/CD 및 자동 배포 환경 구축
- GitHub Actions: 코드 변경 즉시 빌드 및 자동 배포 프로세스 구축
- ArgoCD & Helm: Kubernetes 환경의 지속적이고 안정적인 애플리케이션 배포 및 업데이트 관리
* 기술명 : 중점으로 전문화 할 분야
'기술 단어장 > 🎸' 카테고리의 다른 글
[GitHub] GitHub Issue Template 등록하기 (0) | 2025.04.16 |
---|---|
[FaceGen] FaceGen Customizer 가이드 번역본 (0) | 2025.02.10 |
[Web-Frontend] 일주일 간의 웹 프론트엔드 공부 - 요약지 (0) | 2023.09.08 |
[알고리즘] 한 달 동안의 나의 알고리즘 공부 - 요약지 (0) | 2023.08.30 |
[패키징형식] JAR과 WAR (0) | 2023.05.31 |
댓글