# infrastructure

인터넷의 작동 원리
네트워크 두 개의 컴퓨터가 통신이 필요할 때, 물리적(보통 이더넷 케이블)으로 또는 무선(예를 들어, WiFi)으로 연결되어야 한다. 모든 현대 컴퓨터들은 이러한 연결 중 하나를 이용하여 연결을 지속할 수 있다. 이러한 네트워크는 두 대의 컴퓨터로 제한되지 않고 원하는 만큼의 컴퓨터를 연결할 수 있으나, 연결이 많아질 수록 매우 복잡해진다. 예를 들어 10대의 컴퓨터를 연결하려는 경우 컴퓨터 당 9개의 플러그가 달린 45개의 케이블이 필요하다.. 보기만 해도 어지러운 이 문제를 해결하기 위해서 네트워크의 각 컴

가상화(Virtualization)
1. 가상화 가상화란 가상화(virtualization)란 클라우드 컴퓨팅을 가능하게 하는 가장 기본이 되는 기술로, 컴퓨터 자원(resource, CPU, 메모리, 하드디스크, 네트워크 등)들의 가상화(추상화)된 버전을 제공하는 기술 추상화 공통의 속성이나 기능을 묶어 이름을 붙이는 것 1개의 자원을 여러 개로 나눌 수 있는 것처럼 여기거나, 여러 개의 자원을 하나인 것처럼 생각하는 과정들을 자원을 '추상화'한다고 함. 가상화는 하나의 실물 컴퓨팅 자원을 마치 여러 개인

인프라, 운영에 필수적인 프록시 서버
Before Posting.... 영어로 직역하면 대리 라는 뜻을 가진 proxy는 보통 웹서버 구축시 앞단에 많이 설치되어 보안에 큰 도움을 줍니다. 본 글은 [면접을 위한 CS 전공지식 노트] 1.1.5 55page를 참고하였으며, 책에서 코드나 개념 설명이 더 필요하다 싶은 부분은 추가적으로 조사하여 작성하였습니다. 프록시 패턴 대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 객체 앞단의 인터페이스 역할을 하는 디자인 패턴입니다. > [그림 1] 프록시 패턴] 이를 통해 객체

무선 네트워크과 라우터 설정
무선 네트워크 무선 시스템은 IEEE 802.11에서 주파수의 세기, 통신 방법 등으로 규정하고 있다. 유선은 케이블로 연결되어 전파로 전달되지만 무선은 공기를 매체로 해서 레이저나 빛(laser or LED: 파동이 있음)으로 통신하는데 이더넷의 CSMA/CD(Carrier Sense Multiple Access/Collision Detection) 기법과 유사하지만 무선에서는 CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance) 기법을 사용한다. 스마트 폰 노드 A가 무선 라우터/스위치/모뎀의 역할을 하는 무선 AP(Access Point)를 통해서 다른 태블릿 노드 B에게 프레임을 보낼 때 경쟁은 하지만 충돌은 발생하지 않는다는 의미이다. 그리고 무선에서는 이미 AP가 주변에 신호를 뿌리고 있기(beaconing으로 부름) 때문에 WEP/WPA(2)와 같은 키만 알면 바로 연결되는 2-way han

서버리스 아키텍처
1. Serverless란? 서버리스는 말 그대로 ‘서버(Server)가 없다(-less)’는 뜻 하지만 실제로 서버가 없는 구조는 아니고, 서버에서 처리하는 작업을 클라우드 기반의 서비스로 처리해서 서버 구축 및 관리 비용을 줄이는 구조 따라서 개발 기간과 비용을 단축할 수 있을 뿐 아니라, 서버 운영과 유지 보수의 어려움을 크게 줄일 수 있습니다. 서버리스의 두 가지 중요 포인트 서비스형 서버리스(Serviceful Serverless) FaaS(Functions as a Service) 1-1. Serviceful Serverless 서비스형 서버리스는 직접 서버를 구축하고 프로비저닝하고 관리할 필요 없이, 서버의 역할을 서비스 형태로 사용하는 것을 의미. 예를 들어 인증의 경우, 매번 새로 구축해야 하지만 Auth0 이나 [Amazon Cognito](https://aws.amazon.com

Load Balancer(1)
개념 여러 대의 Server에게 균등하게 Traffic을 분산 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 하는 것이 목적 기존의 서버만으로 원활한 서비스 동작이 불가능하게 될때, 대처 방법은 크게 두 가지가 존재. 기존의 서버 성능을 확장하는 Scale-up 방식 기존의 서버와 동일하거나 낮은 성능의 서버를 증설하는 Scale-out 방식 이 때 Scale-out 방식을 통해 증가한 트래픽에 대처하기로 했다면, 여러 대의 서버로 트래픽을 균등하게 분산해주는 로드 밸런싱이 반드시 필요 로드 밸런싱 기법 라운드로빈 방식(Round Robin Method) 서버에 들어온

ECS(Elastic Container Service)
ECS(Elastic Container Service) ECS란? 컨테이너 관리 서비스(Docker 컨테이너를 이용해 인프라 환경을 좀 더 편리하게 운영, 관리 할 수 있게 해주는 서비스) API 호출을 통해 컨테이너 기반 애플리케이션 시작/중지 가능(손쉬운 관리) 여기서 ** 컨테이너란? 원래 사용되던 VM의 아래와 같은 단점을 보완하기 위해 만들어진 서비스 머신 수준의 분리를 위해 하드웨어 가상화가 필요하다 다양한 부분의 가상화가 필요하므로 많은 리소스와 오버헤드가 수반됩니다 OS의 이미지도 포함하기 때문에 가상 머신 이미지의 용량이 크다 서버의 일관된 운영이 힘들다(snowflake server) 컨테이너의 장점 하드웨어의 가상화를 하지 않고 커널만을 공유한다 하드웨어 에뮬레이션이 없기 때문에 빠른 속도로 빠르게 실행된다 이미지의 용량이 가상 머신에 비해 훨씬 작다 컨테이너 간에 영향을 주지 않

로드 밸런싱 알고리즘과 Load Balancer의 종류
로드 밸런서 (Load Balancer) >로드 밸런서는 특정 서버에 요청이 몰려 부하가 발생하는 것을 방지하기 위해 여러 서버에 트래픽을 분산시키는 장치 또는 소프트웨어이다. 로드 밸런서는 웹 서버의 앞단에 위치하며, 들어오는 요청을 적절한 서버로 라우팅해주고, 웹 서버가 뱉어낸 응답을 클라이언트에 다시 전달한다. 이 과정에서 로드 밸런서는 특정한 로드 밸런싱 알고리즘을 사용하여 요청을 수신해야 하는 웹 서버를 결정한다. 알고리즘은 각 서버의 사용량, 용량 및 전송된 요청 유형과 같은 요소를 고려한다. 로드 밸런서는 웹 서버의 앞단에 위치하기 때문에, 트래픽 분산 뿐만 아니라 보안 역할도 수행할 수 있다. 라우팅 알고리즘 (Routing Algorithm) 앞서 말했듯, 로드 밸런서가 서버로 요청을 넘겨줄 때 라우팅 알고리즘을 사용해 요청을 넘겨줄 서버를 결정한다. 가장 많이 사용되는 라우팅 알고리즘은 라운드 로빈 알고리즘
DPDK와 SR-IOV 정리
가상화 시스템에 대해 공부해보며, 네트워크 가상화와 관련하여 대표적으로 등장하는 기술인 DPDK와 SR-IOV 기술에 대해 정리해 보고자 한다. DPDK란? DPDK (Data plane Development Kit) 기술은 Intel Architecture 기반의 고성능 패킷 처리 소프트웨어로, NIC (Network Interface Card)의 처리속도가 빨라짐에 따라 가상화 시스템에서의 네트워크 성능을 증가시키기 위한 핵심 기술이다. DPDK를 이용하지 않는 경우, NIC에 패킷이 들어오면 Kernel에서 패킷을 처리하고 User Space로 전달하여 Application에서 패킷을 다룰 수 있게 된다. DPDK를 이용하는 경우, User Space에서 PMD (Poll Mode Dr

MySql 서버 다운 이슈 트래킹
회사에서 사용하는 알파 데이터베이스의 MySql이 12월 2일 금요일 밤 죽어서 주말 내내 작동을 멈추었던 경우가 생겼다. 알파 데이터베이스라 서비스 운영 상의 문제가 있진 않았지만, MySql 엔진의 문제일 경우 프로덕션 DB에도 문제가 생길 수 있는 여지가 있어서 이슈를 트래킹 해보았다. 우선 알파 데이터베이스 같은 경우 VM을 사용해서 직접 MySql을 설치 해서 사용하고 있어서 직접 VM에 접속해서 log/error-log/mysql.err을 확인했고, 다음과 같은 로그를 발견했다. 일단 위의 로그로만 확인했을때는 MySql 엔진 문제로 서버가 종료된것 처럼 보이지는 않는다. 그렇다면 커널에서 MySql 데몬을 종료시켰다는 이야기이고 다음과 같은 상황을 고려해야 했다. 어디선가 스크립트로 일
GCP 선점형 VM 도입기
개요 클라우드 플랫폼은 데이터센터를 구축하지 않아도 앉아서 1분 안에 컴퓨팅 노드 생성 및 네트워크 구축 등 손쉽게 인프라를 구성할 수 있도록 해준다. 그러나 주의해서 인프라를 설계하지 않으면 많은 비용이 발생한다. 사내에서 운영했던 ML 기반 학습 서비스는 사용자들에게 딥러닝 기반의 실습을 제공하기 위해 워크로드에 GPU 가 필요한데 클라우드 컴퓨팅 환경에서는 GPU 사용 비용이 굉장히 비싸다. 비용을 절감할 수 있는 방법이 무엇이 있을까 찾아보다가, GCP 자격증을 공부할 때 알게되었던 선점형 VM을 도입하면 비용이 60~70% 정도 절감할 수 있다는 것을 알게 되었다. 오늘은 운영하던 서비스에 선점형 VM을 도입한 내용을 공유하고자 한다. 참고로 우리는 GCP를 사용하고 있으며 선점형 VM도 GCP를 기준으로 설명할 것이다. AWS에도 spot instance라는 개념이 있다고 하니 각자의 상황에 맞게 도입해보자. 선점형 VM이란? 우선 [선점형 VM

AWS CDK로 시작하는 Infrastructure as Code
개요 이번 블로그에는, 제가 현재 공부하고 있는 AWS CDK라는 도구에 대해서 이야기 해보려고 합니다. AWS CDK (Cloud Development Kit)는 AWS에 2019년 7월에 출시 되었으며, 궁극적으로는 AWS 에 존재하는 모든 service들을 IaC (Infrastructure as Code)의 개념으로 사용할 수 있게 해주는 도구인거 같습니다. 그럼 기존에 AWS service들을 관장해주기 위해 사용되던 CloudFormation이나 OpsWork 또는 AWS SAM은 IaC를 못하느냐라고 물으신다면, 가능은 하지만 불편하다라고 이야기할 수 있을거 같습니다. 사실 기존에 사용되던, CloudFormation과 AWS SAM의 stack 정의는 JSON 또는 YAML을 사용하고, OpsWork에 CookBook은 ruby가 사용됩니다. 운영하는 서비스가 장기적으로 성장하여 infrastructure가 커지면, 더 이상 JSON과 YAML로 관리하기 힘들
.jpg)
스토리지, 대용량 고속 저장 장치
✏️ 스토리지는 왜 사용하나요? > > 1. 서버의 내장 디스크를 확장해서 폭발적인 데이터 증가를 수용하기 위해 전용 디스크 박스를 통해 고속으로 처리할 수 있는 필요성이 대두되어 등장 > 2. 내장 디스크에서 흔히 볼 수 없는 복제나 백없 같은 전용 솔루션이 포함되어 관리 효율성을 높여줌 📌 스토리지 정의 및 저장 장치 유형 💿 스토리지란? 컴퓨터의 데이터를 저장하는 저장소 💿 저장 장치 유형 저장 장치는 스토리지 내부에 존재하는 데이터를 저장하는 디스크 모듈입니다. Tape 가장 오래된 저장 장치로, 아주 오랫동안 보관해야하는 데이터 저장 용도로 사용됩니다. HDD(Hard Disk Drive) 현재 기업 Storage 시장에서 가장 많이 활용되는 저장장치입니다 SSD HDD보다 빠르고, 크키가 작다는 장점이 있지만, 가격이 비싸다는 단

[Windows10][WSL2] 도커(Docker) 로 MariaDB 띄우기
https://mariadb.com/ko/resources/blog/using-docker-for-fast-and-easy-testing-of-maxscale/ MariaDB 도커 이미지 검색 > $ docker search mariadb <img src="https://images.velog.io/images/ashappyasikonw/post/7a41151f-597c-4cd7-933c-9202f8bdaa43/image.png" al
HA 제공을 위한 Keepalived & DRBD 적용
HA 제공을 위한 Keepalived & DRBD 적용 ㅇ테스트환경 OS: Centos 7.6 Host 정보 Master Node : 10.30.31.168/27 Backup Node : 10.30.31.170/27 Ping/ARP Test용 Node : 10.30.31.172 VIP : 10.30.31.171/27 ㅇ상세 작업 내용 1. keepalived 프레임워크 설치 Master/Backup 모두에서 실행 상용 서버의 /root/pkgs/keepalived 경로 내용을 구축대상 서버의 동일경로로 복사 keepalived 설치 2. Master Node에 Keepalived config 적용 keepalived.conf 파일에 아래 내용 제외 모두 삭제 **4. Backup Node에 Keepalived confi