다양한 장치를 지원하는 REST API에 대해 고찰

“REST API는 일반적인 요청을 처리하는데 뛰어나며, 다수의 개발자가 API를 쉽게 사용할 수 있도록 하는 일련의 규칙을 수립합니다.” 위 모델에서는 모든 사람들이 규칙을 알고 있으면 엄청나게 강력해집니다. API 공급자는 일련의 규칙을 설정하고 API 소비자는 원하는 것을 얻으려면 공급자가 설정한 규칙을 준수해야 합니다. 그러나 점점 규모가 커지고 사람들이 디지털 콘텐츠 및 서비스를 사용하는 방식이 늘어나고 있는 상황에서는 위 단일 모델 원칙이 부족할 수 있습니다. Netflix의 예를 들어 볼까요? Netflix는 현재 게임 콘솔, 모바일, TV, 블루레이 플레이어, Tablet, PC 및 비디오를...

더보기

Netflix Open Connect에서 인기 콘텐츠 관리 방법

Netflix의 Open Connect 콘텐츠 딜리버리팀은 콘텐츠의 인기도를 예측하여 인프라 효율을 극대화 하려고 합니다. Content Delivery관점에서는 시청 횟수로 인기 콘텐츠를 판별합니다. 즉, 스트리밍된 총 바이트 수를 Asset의 크기(byte)로 나누어 계산합니다. 그럼, 콘텐츠와 CDN 최적화는 어떤 관계가 있을까요? 일반적으로 CDN에서는 짧은 네트워킹 경로를 통해 최대한 많은 콘텐츠를 제공하려고 합니다. 네트워크 대기시간을 줄임으로써 사용자들의 스트리밍 환경을 극대화 할 수 있기 때문입니다. 서버당 사용할 수 있는 디스크 공간이 제한되어 있으므로 모든 Edge Server에 모든 콘텐...

더보기

Kubernetes vs Mesos with Marathon (기술적 관점)

이전 포스팅에서 Kubernetes와 Mesos에 대한 사업적 관점에서 비교를 했었습니다. 본 글에서는 기술적 관점에서의 비교글을 작성합니다. Kubernetes Kubernetes는 컨테이너 어플리케이션의 automating deployment, scaling 및 관리를 위한 오픈 소스 시스템입니다. Kubernetes의 아키텍처는 아래와 같습니다. Kubernetes Cluster와 관련된 구성 요소들은 아래와 같습니다. etcd: etcd는 분산 key-value store이고, Kubernetes에서는 Master Node의 API Server가 HTTP/JSON API를 이용하여 접근할 수 있...

더보기

OCA(Open Connect Appliance)에서 100Gbps 서비스

본 글은 Netflix Tech 블로그의 내용을 번역한 내용입니다. (관심 있는 부분만…) 원문: https://medium.com/netflix-techblog/serving-100-gbps-from-an-open-connect-appliance-cdb51dda3b99 2015년 여름, Netflix Open Connect CDN팀은 NVM Express(NVMe) 스토리지 기반의 단일 FreeBSD OCA에서 100Gbps 속도로 서비스 할 수 있도록 100GbE 네트워크 인터페이스 기술을 활용하는 프로젝트를 수행하기로 결정 했습니다. Fake NUMA(Non-uniform Memory) OCA의 경우 대부...

더보기

Load Balancer 비교

어플리케이션의 고 가용성을 설정하고 성능을 향상시키는 쉽고 가장 빠른 방법 중 하나는 LB(Load Balancer)를 이용하는 것입니다. 로드밸런서는 세 가지 유형이 있습니다. 하드웨어 로드 밸런서는 부하 분산을 제공하는 전용 장치이고 하드웨어 벤더 중 일부는 다음과 같습니다. 하드웨어 로드 밸런서는 가격이 비싸지만, 좋은 성능을 제공합니다. 클라우드 로드 밸런서는 클라우드의 인기와 더불어 많이 사용되고 있습니다. 클라우드 로드 밸런서를 사용하는 것은 하드웨어 어플라이언스에 투자하지 않고도 관련된 모든 기능을 즐길 수 있는 저렴한 방법 중 하나입니다. 다음은 클라우드 로드 밸런서 중 일부입니다. A...

더보기

Kubernetes vs. Mesos: 어느 Container Orchestrator를 사용해야 할까? (사업 관점)

다른 용도로 사용되는 10개의 컨테이너가 있다고 가정한다면, 많은 인스턴스를 사용하고 이러한 컨테이너를 실행하는 것은 매우 쉽습니다. 어플리케이션이 커지면서 배포한 컨테이너 수가 점점 증가하면 서로 다른 버전, 네트워크 구성을 가진 수천 개의 컨테이너를 관리할 때는 상황이 애매해집니다. 컨테이너에 의존하는 개발 기술을 사용하는 회사의 경우, 이러한 유형의 아키텍처를 확장하는 문제가 발생합니다. 오케스트레이션 인프라 스트럭처의 요점은 컨테이너를 “스케줄링”하는 간단한 방법을 제공하고 기본 인프라가 나머지를 수행하도록 하는 것입니다. 이것이 오케트스레이션의 핵심입니다. Kubernetes, Mesos, ECS, ...

더보기

CMAF (Common Media Application Format)

CMAF는 비디오 스트림을 여러 장치에서 저렴하고 쉽게 전달할 수 있도록 Microsoft 및 Apple에서 MPEG 형식으로 정의한 표준화 된 새로운 미디어 스트리밍 형식입니다. 오늘날 거의 모든 스트리밍 비디오가 표준화 된 인코딩 기술을 사용하여 압축되지만 “비디오의 경우 H.264 또는 H.265(HEVC)이고 오디오의 경우 AAC로 압축하고 있습니다.” Container는 이러한 파일에 Timing 정보를 추가하고 기타 meta data를 추가할 수 있습니다. 그리고 이러한 Container는 표준화 되지 않았습니다. Apple의 HTTP Live Streaming(HLS) 프로토콜은 데이터를 MPEG-...

더보기

Jmeter vs. Locust 무엇을 써야 할까?

본 글은 Apache Jmeter와 Locust에 대해서 비교한 글입니다. Apache Jmeter와 Locust는 현재 개발자 사이에서 가장 많이 알려진 인기있는 성능 테스트 도구입니다. Jmeter와 Locust 소개 Jmeter는 가장 먼저 출시된 성능 테스트 프레임워크중에 하나입니다. 순수 자바로 작성되었습니다. Jmeter는 Web 및 FTP 관련 어플리케이션의 부하 테스트를 수행할 목적으로 제작되었습니다. 그러나 현재에는 거의 모든 어플리케이션과 프로토콜을 테스트할 수 있기에 다양한 OS 플랫폼위에서 동작되는 어플리케이션을 테스트 할 수 있습니다. Locust는 Python으로 작성된 성능 테스트...

더보기