Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/

DPDK 정리글을 읽고 오면 좋습니다.DPDK의 원리와 커널 우회(Kernel bypass) DPDK의 원리와 커널 우회(Kernel bypass)DPDK(Data Plane Development Kit)고속 패킷 처리를 위한 데이터 플레인(data plane) 라이브러리와 네트워크 인터페이스 컨트롤러(NIC) 드라이버의 집합이다.운영체제의 도움을 받지 않고 오버헤드 없이 사everenew.tistory.com SR-IOV를 알아보기 전에 OVS에 대해서 알아보자. OVS(OpenvSwitch)OVS 하이퍼바이저에서 실행되는 멀티 레이어 가상의 스위치이다.OVS를 통해 다른 VNF끼리의 전송을 간편하게 만들어 준다. 단 OVS 구현을 위한 패킷 포워딩 모듈은 커널 영역에 구현된다.따라서 이전의..

DPDK(Data Plane Development Kit)고속 패킷 처리를 위한 데이터 플레인(data plane) 라이브러리와 네트워크 인터페이스 컨트롤러(NIC) 드라이버의 집합이다.운영체제의 도움을 받지 않고 오버헤드 없이 사용자 애플리케이션이 직접 하드웨어를 독점제어할 수 있는 자체 인터페이스를 제공한다.이는 User mode에서 Kernel 모드로의 system call을 호출로 발생하는 지연을 제거하여 달성 가능하다.이를 kernel bypass 기술이라고 한다. Kernel Bypass (커널 우회)https://blog.cloudflare.com/kernel-bypass/ Kernel bypassIn two previous posts we've discussed how to rece..

윈도우에서 kafka를 실행하려면, ZooKeeper를 먼저 동작해야 한다.왜 그런 작업이 필요한지 알아보자. Zookper란?kafka는 분산 시스템으로 동작하기 때문에 관리를 해줄 코디네이션 서비스가 필요하다. 분산 시스템은 서버 간의 정보 공유, 서버 상태 체크, 데이터 락 등의 기능이 필수적으로 필요하다.Zookeeper는 분산 코디네이션 서비스로 Kafka와 같은 분산 솔루션에 사용된다. 이전 글을 참조해보면 알 수 있지만, 분산 시스템은 가용성을 챙긴 만큼 단점이 존재한다.https://everenew.tistory.com/483 (알림 시스템으로 알아보는) 분산 시스템의 trade-off (두 장군 문제)알림 서비스가 분산 시스템을 사용하는 이유 애플리케이션으로 알림을 보내는 대표적인..

빌드란?소스코드를 실행가능한 프로그램 파일로 만드는 과정을 의미한다.이 과정에서는 소스코드의 컴파일과 실행 관련 파일을 패키징하여 배포 가능한 형태로 만든다. 빌드 도구빌드 과정을 자동화해주는 소프트웨어로 대표적인 빌드 도구가 Maven과 Gradle이다.이 도구들은 의존 라이브러리들을 대신 다운로드 해주고 컴파일/테스트/빌드의 과정을 진행해 준다.Maven과 Gradle을 알아보기 전에 이전에 사용되던 빌드 도구도 같이 알아보자. MakeUNIX 계절에서 사용되는 원조 빌드 툴이다.Makefile을 통해 빌드 작업을 통일된 구조로 제공하며 C언어 빌드에는 아직도 활용된다. ANTJava의 등장으로 C언어 위주의 빌드 툴인 Make를 대체하기 위해 등장했다.간단하기 때문에 사용에는 쉽지만,..

Gitlab을 이해하기 위해서는 비슷해보이는 Github과 도대체 어떻게 다른지가 중요했다. 둘이 비슷한 네이밍을 가지길래 같은 회사의 서비스인 줄 알았지만, 사실 Git라는 분산형 버전 관리 시스템을 제공하는 다른 서비스들이다. Git이란분산형 버전 관리 시스템으로, 소스코드 파일들을 복사,백업,저장 등의 기능을 제공하여 많은 프로젝트 인원들이 함께 같은 파일을 작업할 수 있다. 자세한 기능과 원리는 inpa님의 게시글을 참조하자.https://inpa.tistory.com/entry/GIT-%E2%9A%A1%EF%B8%8F-%EA%B0%9C%EB%85%90-%EC%9B%90%EB%A6%AC-%EC%89%BD%EA%B2%8C%EC%9D%B4%ED%95%B4#git_%EC%9D%B4%EB%9E%80_..

문제 상황VPN으로 접속한 원격지의 Ubuntu Server에서 minikube를 사용한다.minikube를 docker 컨테이너로 동작하므로 세팅하였으므로, minikube의 IP는 외부에서 접근할 수 없는 사설 대역대 이다. minikube에서 nodeport로 웹서비스 파드를 열어 주더라도 minikube는 현재 Ubuntu Server에서만 접근 가능하다. 따라서 현재 로컬 PC에서도 접근가능하도록 Host VM인 Ubuntu Server에 포트포워딩을 적용해보자. iptables를 통한 포트 포워딩리눅스에서는 iptable을 이용하여 네트워크 필터링 및 주소 변환 등이 가능하다. 80번 포트를 목적지로 하는 패킷이 수신되면, 해당 패킷의 목적지를 모두 30511 포트로 변경한다.ipt..

알림 서비스가 분산 시스템을 사용하는 이유 애플리케이션으로 알림을 보내는 대표적인 서비스는 FCM(andriod)과 ARNs(IOS)이 있다.애플리케이션뿐만 아니라 이메일이나 slack 메시지 등 알림 서비스는 다양한 매체에 적용된다. 이러한 알림 서비스에서는 가장 중요한 것이 알림 데이터 손실을 방지하는 것이다.만약 단일 시스템을 사용한다면 single point of failure(단일 장애지점)이 되기 때문에 리스크가 크다.따라서 메시지를 보내는 앞단에 메시지 큐(Apache Kafka, RabbitMQ 등)를 적용하게 된다. 이러한 메시지 큐들도 결국 단일 장애지점을 피하기 위해 분산 시스템이 사용된다. 분산시스템의 Trade-off 그런데 여러 서버를 배치하는 분산 시스템에서는 정확히 한..

커스텀 명령어리눅스 쉘에 커스텀 명령어를 만들어보자. 리눅스 명령어에는 타입이 존재한다. 위와 같이 type 명령어를 통해서 명령어의 타입을 확인할 수 있다.cd와 같이 기본적인 셀 자체 내장의 명령어는 shell builtin으로으로 출력되지만외부 명령어인 mv, cp는 명령어 파일이 저장된 위치가 출력된다. 명령어 파일의 디렉터리모든 것이 파일인 리눅스에서는 명령어도 결국 파일로 이루어진다. 파일을 실행하기 위해서는 경로와 이름을 사용해서 실행한다.Ex) ./myfile 하지만 환경 변수인 PATH에 경로 정보를 등록하면 파일을 실행하기 위한 경로를 생략할 수 있다.따라서 경로 지정이 명령어 실행 시 현재 폴더에 해당 파일이 없다면, PATH에 등록된 정보를 통해 실행 가능한 명령어인지 확인하..

네이버 클라우드는 프리티어로 3개월간 사용가능한 10만 원의 크레딧 제공한다.이 크레딧을 활용해서 웹서버를 띄워보며 AWS와의 차이점을 확인해 보자. 1. VPC 생성AWS와 동일하게 VPC부터 생성해주어야 한다. AWS와 다르게 VPC의 IP 범위를 추천해주지 않는 것이 특이하다.생성 자체도 생각보다 느려서, 거의 몇 분 정도가 소요된다. 2. Subnet 생성 VPC에서는 subnet 안에 리소스를 배치할 수 있으므로 Subnet을 생성해 주자. 서브넷은 AWS와 동일하게 가용 영역 단위이며, 가용 영역은 한국에도 두 곳 밖에 제공되지 않는다. 특이한 것은 subnet의 용도를 생성 시에 결정할 수 있다.우리는 일단 public 하게 웹서버를 열어볼 것이므로 일반을 선택하자. 3. ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/340212 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 난이도: Lv.2 일단 정답은 문제들 중 최대 diff(난이도) 만큼의 level(숙련도)의 이하일 것이다.level 최대 diff보다 높아도 이미 모든 문제를 한 번의 시도로 풀 수 있기 때문에 의미가 없다. 따라서 1 ~ max_diff 사이에 정답이 있다.가장 간단히는 max_diff부터 순서대로 숙련도를 1씩 줄이면서 시간 안에 문제를 풀어보는 브루트 포스 방법을 생각할 수 있..