Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
정말 빠르면 1~2초 안에 시청자에게 도달하는 라이브 스트리밍 방송들은 어떻게 이뤄지는 걸까?이를 네트워크 프로토콜을 중심으로 알아보자. 1. 카메라 데이터의 인코딩 카메라로 촬영한 영상이 해당 플랫폼이 지원하는 코덱으로 변환되어한다. 코덱(codec)은 어떠한 데이터 스트림이나 신호에 대해, 인코딩이나 디코딩, 혹은 둘 다를 할 수 있는 하드웨어나 소프트웨어를 일컫는다. 또, 이를 위한 알고리즘을 가리키는 용어로도 쓰인다.일반적으로 코덱이라고 하면 영상, 음향 등 미디어 정보를 압축하는 기술을 가리킨다.- 위키피디아- 코덱을 통해 영상의 데이터 스트림을 디코딩이 가능하게 압축한다.이때 비손실 코덱의 경우 원본의 정보를 그대로 살려 압축하기 때문에 압축률이 높지 않다.데이터가 커질수록 네트워..
리눅스 계열의 OS를 사용하면 apt, yum, dnf와 같은 명령어를 사용해 패키지를 다운로드한다.이때 각 명령어가 어떻게 다른지 확인해 보자. 리눅스 배포판일단 리눅스는 각 배포판에 따라서 사용되는 패키지 다운/설치 명령어가 다르다.대표적으로는 데비안 계열과 레드헷 계열이 있다. 1. 데비안 계열의 경우데비안 계열의 대표적인 OS가 바로 Ubuntu이다.Ubuntu에서는 .deb 형식의 컴파일된 바이너리 패키지 포맷을 사용한다. dpkg이 .deb 형식의 데비안 패키지 관리 시스템이 dpkg이다.dpkg는 .deb 패키지의 설치, 삭제, 정보 제공을 위해 사용되는 저레벨 도구이다. 문제는 우리가 사용하는 대부분의 패키지들은 다른 기본 패키지들에게 의존성을 가진다는 것이다.dpkg로 패키..
취득 목적 AWS SAA 자격증을 취득하고 AWS 프로젝트로 인프라를 설계/구현해 본 것까지는 좋았다. 문제는 구현 후였다. 적절한 모니터링과 문제 상황에 대한 대응이 준비되어 있지 않아서 운영이 되지 않는데, 고가용성과 비용최적화가 무슨 소용일까?결국 아키텍팅의 기본은 운영에 대한 이해에서 시작한다는 것을 알게 되었다.하지만 운영을 경험하는 것이 아니라 혼자 공부한다는 것부터가 막막했기 때문에, 운영적인 지식에 도움이 되는 SysOps Administrator 자격증을 준비하게 되었다. 아직 실무 경험이 없기 때문에 Associate로 준비하였고 최종 합격까지 성공해 후기를 남긴다. 공부 방법 자격증 자체만을 목표로 하면 당연히 최신 덤프들을 구해서 외우면 된다.하지만 개인적인 취득 목적은 ..
AWS Network Firewall을 사용하게 되면, VPC 내부에 감시 자원 배치되는 것이 아니라 트래픽을 전송하는 엔드포인트가 배치된다. 이 엔드포인트가 Gateway Load Balancer(GWLB)로 연결된다. 따라서 IGW와 연결된 subnet들에는 Endpoint로의 라우팅 경로를 설정해 주게 된다.이를 통해 IGW의 In/out bound 트래픽은 항상 Gateway Load Balancer로 전송되어 Network Firewall 서비스에서 검사가 수행된다. 이 Gateway Load Balancer란 도대체 뭘까? Gateway LoadBalancer(GWLB) Network LoadBalacner는 4 계층인 TCP/UDP까지 검사한다.따라서 7 계층까지 검사해 처..
링크 로컬 주소란? 링크 로컬 주소 같은 네트워크와 브로드케스트 도메인에서만 통신이 유효한 네트워크 주소이다.라우터 외부로 나가면, 더 이상 같은 네트워크가 아니기 때문에 라우터가 패킷을 전송하지 않는다. IPv4에서는 169.254.0.0/16 범위, IPv4에서는 fe80::/10 범위가 링크 로컬 주소로 예약되어 있다.(IPv4에서 실제로 사용가능한 주소는 169.254.1.0 ~ 169.254.254.255이다.) 이러한 링크 로컬 주소는 일반적으로 DHCP를 통해 주소를 할당받을 수 없을 때 (DHCP 서버가 존재하지 않거나 더 이상 IP 풀이 없을 때), 예약된 링크 로컬의 범위 내에서 랜덤으로 IP를 선택한다.선택한 IP로 ARP를 날려, 응답이 있다면 다른 IP를 선택하고 응답이 ..
Route 53 Resolver를 VPC 내부에서만 사용하는 경우 VPC 내에서는 외부로의 인터넷 접근을 차단해도 VPC의 내부 서비스의 DNS 쿼리 가능하다.그 이유는 Route 53 Resolver가 VPC 내부에서의 DNS 서비스를 제공하기 때문이다. Route 53 Resolver는 해당 VPC의 IP 주소에 0.0.0.2를 더한 IP로 정의된다. (VPC + 2라고 표현하는 듯하다.)10.0.0.0/24라면 10.0.0.2가 해당 VPC의 Route 53 Resolver IP이다.(이미 예약되어있으므로 다른 자원들 사용할 수 없다.) IPv6의 경우 fd00:ec2: :253 주소를 사용한다. VPC의 DNS resolution 기능이 활성화되면, VPC 내부에서 발생하는 DNS 쿼리 요청은..
VPC Endpoint란? VPC endpoint는 AWS의 서비스를 public internet을 통하지 않고, AWS 백본 네트워크인 Private Link를 통해 안전하고 빠르게 접근할 수 있는 서비스를 제공한다.이를 위해서 VPC에는 목표 서비스의 Gateway endpoint 또는 interface endpoint를 배치해야 한다. S3는 VPC Gateway endpoint를 지원하다가 interface endpoint 서비스가 생기면서 interface endpoint 까지 생성할 수 있게되었다. 일반적으로 DynamoDB와 S3는 Gateway endpoint를 사용하는 것이 권장되는데, 어떤 상황에서 어떤 것이 좋을지 확인하기 위해 두 서비스의 명확한 차이를 알아보자. Ga..
AWS의 서비스에서 이벤트에 대한 알림을 발송해야 할 때 SNS와 EventBridge를 자주 사용한다. 두 가지 서비스를 활용하면 이벤트 기반 아키텍처를 설계할 수 있다. 그런데 어떤 상황에서는 EventBridege를 활용해서 알림을 보내기도 하고 SNS로 알림을 보내기도 한다.이런 상황의 차이는 무엇일까? 대상의 차이SNS 주제의 구독 대상은 상당히 적다.AWS의 서비스로는 Kinesis, SQS, Lambda 밖에 지원이 안 되고 있다. EventBridge 출시 전에는 SNS와 연동된 Lambda를 통해서 다른 서비스와의 연동을 진행했다고 한다.이러한 Lambda 코드의 관리 또한 문제가 발생할 수 있는 지점이다. 반면 비교적 새로 출시된 서비스인 EventBridge는 대상..
Hypervisor의 OverCommit가상화의 핵심인 하이퍼바이저는 자원을 극한으로 효율적으로 사용하기 위해 OverCommit 기능을 사용한다. VM들이 모두 같은 자원량을 나누어 사용한다고 가정해 보자.이 기능을 사용하면, 하이퍼바이저가 물리 호스트의 자원을 정확히 VM 개수만큼 N등분하지 않고 N개 이상의 VM을 동작시킨다. 사실 모든 VM이 자원을 100% 활용하지 않기 때문에, AWS와 같은 CSP 입장에서는 자원을 1:1 크기로 예약해 두면 유휴 자원이 발생한다. 이러한 자원 낭비를 막고자 물리적인 컴퓨팅 자원보다 VM들에게 더 많은 CPU와 메모리를 프로비저닝 하게 된다. 이를 Overcommit이라고 한다. CPU overcommitCPU overcommit은 CPU 자원을 물..
왜 CloudWatch가 EC2 Memory 모니터링을 제공하지 않을까? EC2에서 CloudWatch는 CPU와 네트워크 정보는 기본적으로 수집을 제공한다.반면에 Memory와 Disk 정보에 대해서는 CloudWatch Agent를 OS에 추가로 설치해야만 수집할 수 있다. CPU까지는 기본적으로 수집할 수 있는데, 왜 Memory는 추가적인 소프트웨어를 설치해야만 수집할 수 있는 것일까?핵심적인 원인은 Hypervisor Level과 OS Level에서 수집할 수 있는 정보의 차이다. CPU는 Hypervisor Level 하이퍼바이저는 기본적으로 물리적 Host의 CPU 사용을 VM마다 적절히 분배해야 한다.Guest OS는 하이퍼바이저에게 제공받는 시간만큼의 CPU를 사용하기 때문..