Python에 대한 단상

기술 2014. 11. 13. 22:12
반응형

Python 으로 NFV(Network Function Virtualization) 시스템 제어 프로젝트를 하고 있다.

NFV에 대한 얘기는 정말 한 참 해야할 얘기라 11/20일 코엑스에서 할 OSC 세미나에 오셔서 들으시고... Python을 잠깐 써보면서 몸으로 실감한 장점을 얘기하고 싶다. (순서는 내맘)


- 우선 JSON/REST 서버 구현하고 싶다면 Flask에 Python json 라이브러리 쓰면 정말 Java에 비해 코딩량 절반 이하 (JSON과 Python Dictionary 구조체의 찰떡 궁합)
- 강력한 String 연산 함수 덕분에 시스템 제어 시 많이 발생하는 로그 Parsing 드에 최적. substring, reverse index 개념 등
- Native 라이브러리 호출 편리. Java에서는 JNI로 인터페이스 모듈을 만들어야 하지만 Python에서는 header 파일처럼 메타 정보만 선언하면 호출 가능. 이 역시 시스템 제어 시 매우 편리
- LUX 기반 시스템에서 외부 명령 실행 시, Java JVM(대용량 Heap 메모리의 경우 특히) fork에 비해 경량
- pip를 통한 편리한 라이브러리 설치 및 다양한 라이브러리
- 인터프리트 모드에서 쉽게 샘플코드 테스트
- 유연한 Type Checking... JavaScript처럼 너무 유연해서 디버깅이 어렵지도... Java/C처럼 엄격해서 Type Casting을 너무 많이 해야 하지도 않음

* 특히 강추하고 싶은 라이브러리 하나... PyParsing!!! BNF(약자가 사람 이름이었던 것 같은데 까먹었음) 문법을 Python에 정말 기가 막히게 녹여 넣어서 그냥 BNF 쓰듯이 쓰면... 예를 들어 SQL, 각종 config 파일, 로그 등에 대한 Parsing을 정말 체계적으로 할 수 있다. 사실 NFV 장비의 config 파일들이 아쉽게도 JSON이나 XML처럼 현대화된 문법이 아니라 고민이 많았었다. 그래서 초기에는 Grok라는 Regex 기반 라이브러리를 고민하다가 PyParing & BNF로 선회 했는데 복잡한 NFV 장비의 문법을 단 열줄로 Parsing 해서 Python Dictionary에 담아 준다. 그러면 JSON으로 변환도 쉽다. 내부에서 Python 강의 중인데 후반부는 PyParsing 강의를 넣을까 하고 모든 내용은 녹화되고 있으므로 조만간 외부 공개를 하게 될듯 하다.


Java Lover의 python 사랑 얘기 ㅋ


Posted by Hey Jerry
,