[개요]
- Google의 차세대 모바일 앱 프로젝트 개발 플랫폼인 Flutter에 탑재 가능한 3D graphics 모듈을 개발하는 프로젝트
- Flutter는 현재 2D UI/레이아웃에 집중되어 있어 3D 그래픽 처리에 대한 개발이 필요한 상태
[필요성]
- Flutter는 iOS, Android 환경에서 native로 개발된 것처럼 탁월한 성능을 보여 매우 주목 받고 있음
- 그러나 기존 그래픽스 라이브러리와 호환되지 않아 이에 대한 요구가 나날이 높아지는 상황
- 그래픽스 라이브러리는 모바일 앱을 비롯하여 웹 기반 어플리케이션, Unity에서 폭넓게 활용됨
[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 프로그램을 러스트스럽게 개발할 수 있는 메커니즘을 제공합니다.