DPDK를 통해 사용자 공간 프로세스가 네트워크 장치를 직접 이용할 수 있고, 그래서 최소한의 성능 패널티로 네트워크 기능을 사용자 공간에서 구현할 수 있게 된다. 그래서 개발이 편해지는 면도 있지만 더 중요한 건 클라우드 환경에 맞는 형태로 네트워크 응용을 만들 수 있다는 점이다.

네트워크 못지 않게 많은 I/O가 일어나고 다양한 장치가 있는 부문이 저장 쪽이다. 그렇다면 마찬가지로 사용자 공간에서 저장 장치를 직접 이용하는 구조를 만들어 볼 수 있을 테고, 그게 SPDK다. 폴링 방식, 인텔 주도, 비슷한 면이 많다.

DPDK만으로 만들 수 있는 응용의 종류에는 한계가 있다. 더 다양하게 만들려면 네트워크 스택 구현체가 필요하고, lwIPvpp 등이 선택지가 될 수 있다.

마찬가지로 SPDK만으로는 블록 장치 접근이 가능할 뿐이다. 더 다양한 응용을 위해선 사용자 공간을 위한 파일 시스템 구현체가 필요하다. 어떤 선택지가 있을까?

반대로, DPDK와 SPDK의 단순한 기능만으로 만들 수 있는 건 뭐가 있을까? SPDK 홈페이지에서 언급하는 “disk over network” 기능도 가능하겠고, 더 효율적인 패킷 레코더/재생기도 가능할 것 같다.