OpenStack CLI in Rust
요구사항
- OpenStack의 주요 기능에 대한 CLI를 rust로 작성한다.
- Rust의 REST web client 등 라이브러리를 사용한다.
- Identity Service 먼저, Read 속성 API부터 구현한다. (LIST, GET)
- 이후 세세한 부분은 이미 작성된 OpenStack-rust 라이브러리를 활용한다.
- 일반적인 명령어의 API 호출과정을 일부 캐시화 하여 성능을 최적화한다.
주요 구현사항
- 첫 service API 동작은 직접 작성한다. (REST client는 라이브러리 사용)
- 이후 service API는 기존 라이브러리와 호환되게 작성한다. (객체지향 adapter pattern 등의 학습)
- 요청 과정의 최적화 기능을 작성한다. 기존 동작 과정은 token 발급 → endpoint 확인 → 해당 endpoint 요청 식으로 이뤄진다. 여기서 token은 expire datetime까지 유효하다. endpoint는 쉽게 바뀌지 않을 가능성이 높다. 즉, 앞의 2 단계는 1회 호출 이후 캐시하여 최적화가 가능한 것으로 보인다. cache 정보 저장 & 활용은 tmpfs 등을 활용한다.
2020.07.30
- Command Line 구현 → structopt, clap 등 crate 참고
- structopt PoC → derive 방식으로 정의 structopt가 clap을 이용하여 구현, 추상화 및 추가구현 된 상태
- clap PoC → derive, builder 방식으로 정의 개인적인 취향은 builder쪽인데, 고민 중