본문 바로가기

[2020년 파트-정준영 개발자] aiozk/redBPF

esrse 게시글 작성 시각 2020-07-28 12:01:07 게시글 조회수 983
글로벌 전문개발자 파트
aiozk, redBPF
정준영
[aiozk]

최근 몇 년 동안 python, rust, javascript 등 주요한 언어들에 async/await 기능이 추가되었습니다. 하지만 언어 사용자 관점에서 아직까지는, 이걸 자신의 제품에 활용하기에는 이르다고 생각할 수 있습니다. 왜냐하면 안정성도 부족하고, 이 기능을 지원하는 라이브러리 역시 부족하며, 주변에 이걸 해본 사람은 드물기 때문입니다.

반면에 공개SW개발자 관점으로는, 이 분야에 기여할 점들이 많이 있다고 볼 수 있습니다.

asyncio는 비동기I/O를 지원하는 파이썬 표준 라이브러리입니다. 그리고 aiozk는 이걸 활용한 zookeeper client library입니다. 만약 비동기식으로 동작하는 파이썬 프로그램이 주키퍼를 사용해야할 필요가 생겼다면, aiozk가 가장 합리적인 선택이 될 것입니다.


[redBPF]

BPF는 리눅스 커널의 여러 subsystem 중에서, 활용가치로 따지자면, 최고라고 할 수 있습니다. 개념적으로 BPF는 리눅스 커널 안에서 동작하는 가상머신입니다. 커널은 userspace로부터 BPF bytecode를 입력받아 적재합니다. 그리고 사용자가 지정한 추적점에 그 코드를 부착시킵니다. 이렇게 해두면, 커널의 code execution path가 그 추적점을 지나는 순간에, 미리 부착해두었던 BPF bytecode가 실행됩니다.

커널 내에서 동작하는 BPF 프로그램은 BPF bytecode로 작성되어야 합니다. 하지만 이 bytecode를 직접 개발하는 사람은 드물고, 대신에 C로 작성된 소스코드를 LLVM으로 컴파일하여 BPF bytecode를 생성하는 방법으로 개발합니다.

최근에 시스템 프로그래밍 분야에서는 rust 언어가 화두입니다. 시스템 프로그래밍은 수십년의 개발 역사가 있고 충분히 성숙된 분야이지만, 이곳에서도 새로운 언어를 도입하는 바람이 불고 있습니다. 러스트는 메모리 안전성을 보장하며, 성능이 매우 좋고, 안전한 병렬 프로그래밍 방법을 제공합니다. 또한 메모리에 직접 접근할 수 있어서 로레벨 프로그래밍도 가능해, 시스템프로그래밍에 적합한 언어입니다. 그동안 BPF bytecode를 생성하기 위해서는 BCC가 제공하는 메커니즘을 따라, C로 개발하는 방법이 대세였으나, 시스템 프로그래밍 분야에서 러스트 언어의 인기가 늘면서 러스트로 BPF 프로그램을 개발하려는 니즈가 생겼습니다. 바로 redBPF가 러스트로 BPF 프로그램을 러스트스럽게 개발할 수 있는 메커니즘을 제공합니다.
2020 년
기타

[2020년 파트-정준영 개발자] aiozk/redBPF

 

정준영

 

* 주요 경력
2012.08 ~ 2017.04 · 네이버 검색개발
2017.04 ~ 2020.08 · 11번가 검색개발
2020.08 ~ · 카카오엔터프라이즈 AI플랫폼개발
2020.02 ~ · 공개SW개발자-파트

 

* 전문 분야
검색 시스템, 분산 시스템, 리눅스 운영체제, 리눅스 시스템 프로그래밍, high throughput/low latency/high available 서버 프로그래밍, 이맥스 에디터, C, python, 로레벨 디버깅

 

* 활동 커뮤니티
reddit, twitter, github, lwn 등을 수시로 돌아다니면서 개발자 세계의 트렌드와 많은 개발자들이 주목하고 있는 신기술들에 대해서 소식을 업데이트하고 있습니다.

 

그리고 OKKY에 Tech Q&A 게시판에 종종 가서 뉴비들이 올린 기초적이지만 주요한 개념들에 대한 질문들에 답글을 달고 있습니다. 이런 질문에 답을 하다 보면 가끔 내가 초보자를 이해시킬만큼 확실히 알지는 못했던 개념들을 스스로 정리해볼 수 있는 기회도 되어서 좋습니다.

 

* 활동 프로젝트 분야
python 라이브러리
rust 라이브러리

 

* 프로젝트명
aiozk
redBPF

 

* 프로젝트 개요

[aiozk]

최근 몇 년 동안 python, rust, javascript 등 주요한 언어들에 async/await 기능이 추가되었습니다. 하지만 언어 사용자 관점에서 아직까지는, 이걸 자신의 제품에 활용하기에는 이르다고 생각할 수 있습니다. 왜냐하면 안정성도 부족하고, 이 기능을 지원하는 라이브러리 역시 부족하며, 주변에 이걸 해본 사람은 드물기 때문입니다.

 

반면에 공개SW개발자 관점으로는, 이 분야에 기여할 점들이 많이 있다고 볼 수 있습니다.

 

asyncio는 비동기I/O를 지원하는 파이썬 표준 라이브러리입니다. 그리고 aiozk는 이걸 활용한 zookeeper client library입니다. 만약 비동기식으로 동작하는 파이썬 프로그램이 주키퍼를 사용해야할 필요가 생겼다면, aiozk가 가장 합리적인 선택이 될 것입니다.


[redBPF]

BPF는 리눅스 커널의 여러 subsystem 중에서, 활용가치로 따지자면, 최고라고 할 수 있습니다. 개념적으로 BPF는 리눅스 커널 안에서 동작하는 가상머신입니다. 커널은 userspace로부터 BPF bytecode를 입력받아 적재합니다. 그리고 사용자가 지정한 추적점에 그 코드를 부착시킵니다. 이렇게 해두면, 커널의 code execution path가 그 추적점을 지나는 순간에, 미리 부착해두었던 BPF bytecode가 실행됩니다.

 

커널 내에서 동작하는 BPF 프로그램은 BPF bytecode로 작성되어야 합니다. 하지만 이 bytecode를 직접 개발하는 사람은 드물고, 대신에 C로 작성된 소스코드를 LLVM으로 컴파일하여 BPF bytecode를 생성하는 방법으로 개발합니다.

 

최근에 시스템 프로그래밍 분야에서는 rust 언어가 화두입니다. 시스템 프로그래밍은 수십년의 개발 역사가 있고 충분히 성숙된 분야이지만, 이곳에서도 새로운 언어를 도입하는 바람이 불고 있습니다. 러스트는 메모리 안전성을 보장하며, 성능이 매우 좋고, 안전한 병렬 프로그래밍 방법을 제공합니다. 또한 메모리에 직접 접근할 수 있어서 로레벨 프로그래밍도 가능해, 시스템프로그래밍에 적합한 언어입니다. 그동안 BPF bytecode를 생성하기 위해서는 BCC가 제공하는 메커니즘을 따라, C로 개발하는 방법이 대세였으나, 시스템 프로그래밍 분야에서 러스트 언어의 인기가 늘면서 러스트로 BPF 프로그램을 개발하려는 니즈가 생겼습니다. 바로 redBPF가 러스트로 BPF 프로그램을 러스트스럽게 개발할 수 있는 메커니즘을 제공합니다.

 

* 프로젝트 특징

[aiozk]
asyncio에 기반한 비동기식 라이브러리
새로운 방식으로 프로그램을 개발하는 재미
대부분의 비동기식 라이브러리가 미성숙한 단계임
재미를 찾을 수 있는 구석이 많다

 

[redBPF]
러스트 코드를 LLVM을 이용해서 BPF bytecode로 컴파일함
LLVM 최적화 로직 튜닝 필요
C로 개발할 수 있게 해주는 BCC를 활용하여 BPF 프로그램을 개발할 때와는 또 다른 재미

 

* 프로젝트 목표

[aiozk]
올해 안에 1.0 버전을 릴리즈하는 것이 목표입니다. 이를 위해서 라이브러리의 안정성을 확신할 수 있을만큼 테스트 코드를 충분히 작성할 계획입니다. 또한 주요한 코드를 리팩터링하고, API의 사용성을 개선하고, 사용자용 문서를 추가할 것입니다.

 

[redBPF]
제가 이 프로젝트의 목표를 제시할 입장은 못 됩니다. 하지만 이 프로젝트에 대한 개인적인 목표는 있습니다. 제가 생각하기에 이 프로젝트는 입문자에게 허들이 좀 높은 느낌입니다. 이를 완화하기 위해서 입문자들이 참고할만한 예제코드를 추가하는 작업을 할 계획입니다. 그리고 테스트 코드도 기여할 것입니다.

전문개발자 프로젝트 - 번호, 제목, 분야, 조회수, 작성
번호 제목 분야 조회수 작성
173 [2020년 파트-정준영 개발자] aiozk/redBPF 기타 983 2020-07-28
172 [2020년 파트-김민기개발자] ARCUS 정보시스템 1048 2020-07-28
171 [2020년 파트-박종현개발자] Backend.AI 정보시스템 1017 2020-07-28
170 [2020년 파트-신준수 개발자] KOMORAN 인공지능(AI) 1116 2020-07-28
169 [2020년 파트-강솔개발자] Hyperledger Fabric 블록체인 1067 2020-07-28
168 [2020년 파트-박준형 개발자] Paranoid Android - AOSPA 모바일 1156 2020-07-28
167 [2020년 파트-최영선개발자] SQLAlchemy-HANA 빅데이터 1026 2020-07-28
166 [2020년 파트-홍영택개발자] Yorkie 빅데이터 1330 2020-07-28
165 [2020년 파트-맹윤호개발자] Tensorflow Lite 인공지능(AI) 1057 2020-07-28
164 [2020년 파트-홍원준개발자] OHDSI 헬스 케어 989 2020-07-28
맨 위로
맨 위로