왜 구글이 Python을 썼는지 이제 알것같다.

Google 프레임웍 Archtecture라는 글에서 구글이 Python을 이용해 웹봇을 만들었다는 이야기를 잠시 언급한적이 있었다.

그때 단지 구글이 Python으로 왜 만들었을까 굉장히 궁금했었다.
그런데 이제는 그 이유를 조금이나마 알것같다.

웹로봇의 속도는 네트웍 속도에 90%이상 로봇의 속도가 좌우가 된다. 실제적으로 내부적인 로직 htmlparser 나 문서 filter같은 경우 input output하는데 얼마 걸리지 않는다 거의 우리가 인지하지 못하는 찰나에 해버린다.
네트웍 병목현상에 좌지우지 된다고 봐야겠다.

일단 코딩 편의성 측면에서 최고다!
로봇같은 경우는 90%이상의 코드가 문자열 처리를 하는 코드다. C로 처리했으면 문자열을 처리하는데 malloc나 free를 반복적으로 무수하게 반복하며 디버깅하면서 발견하기 힘든 포인터 참조 에러라는 막중한 위험을 안고 다녀야하는데 Python같은 경우는 그럴 필요가 없고 디버깅하기도 무척 편리해 구현 자체에만 신경을 쓰면 된다.

두번째로 위와같은 이유로 인해 개발시간 단축을 꾀할수 있었다.
Python으로 뼈대 및 htmlparaer나 headerparser 등을 만든다음에 시간이 많이 소요되리라 예상이 되는 문서 filter 모듈부분을 C로 구현을 했다. C를 사용함으로써 속도문제도 어느정도 보완을 해버린것이다.
그래서 결론적으로는 집중할수 있는 부분에 집중하고 나머지 부분은 Python의 장점을 최대한 이용을 해 시간 단축및 필요한 부분에 집중할수 있는 시간을 번 것이다.

세번째 로봇의 커스터마이징이다.
로봇은 엉터리 html코드및 인코딩 문제 헤더 문제, 로그인 문제 등으로 인해 검색엔진을 납품할때 커스터마이징이 필요하다. 물론 커스터마이징이 필요없게 만드는게 유능한 프로그래머의 역할이긴 하지만 그렇지 못한 부분도 있어 어쩔수 없다.

0 0 votes
Article Rating
Subscribe
Notify of
guest

4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
최종욱

근데 말이죠, CPython은 쓰레드가… 대략 난감한데-_-;

고감자

항상 생각할 거리를 던져 주시는 군요. ㅋㅋㅋ

대한민국은 잘 지키고 계시는지? 혹시 이런생각때문에 ㅋㅋㅋ

CPython이라함은 Python + C 모듈이 같이 쓰인것을 의미하겠죠?

그러면 쓰레드에서 문제가 되는것은 데이터 영역 공유에 따른 Lock관련 문제라고 생각이드는데, 이 부분은 C모듈에서 상관하지 말고 Python에서 락을 걸고 풀어주는것으로 해결하면 간단하지 않을까 합니다.

C모듈이 쓰이는 곳은 그렇게 많지 않을테구요. 아마도 쓰레드 핸들링 하는게 C모듈단에까지 넘어가면 복잡해 질 듯 합니다. 그리고 C 확장 모듈상으로 쓰레드가 어찌 구현이 되어 있는지도 살펴봐야 되구요.

암튼 좋은 질문… 또한 감사합니다.

최종욱

제가 말한 건 파이썬 구현 자체의 문제입니다. 🙂 말해놓고 나니 저도 되게 궁금하네요. 트랙백 보냈습니다.

trackback

구글은 Python을 쓴다. 하지만, CPython에는 쓰레드 문제가 있다. 구글에서는 CPython말고 쓰레드 문제가 없는 Python을 쓰는 걸까? 되게 궁금하네. 🙂 누가 나 좀 알려줘요~