Google에 관심이 있는 많은 소프트웨어 엔지니어 분들이 Google의 소프트웨어 엔지니어는 무슨 일을 하는지 궁금해 합니다. 그래서 저의 첫 프로젝트였던 "한국어 Q&A"에 대해 소개해 드리면서, 그 궁금증을 조금이나마 풀어드리고자 합니다.

입사 후 2주 동안, 엔지니어 오리엔테이션을 받았습니다. 행정, 인사같은 일반적인 지식 뿐 아니라, Google의 서버 구조같이 테크니컬한 지식까지 다양한 강의가 준비되어 있었습니다. 이 기간에는 오리엔테이션 내용을 소화하고 자유롭게 회사 분위기를 익히라는 의도에서 특별이 부여받은 업무는 없었습니다.

오리엔테이션이 끝나고 멘토(mentor)가 첫 프로젝트로 할만한 프로젝트들을 소개해줍니다. 일의 특성, 프로젝트가 Google 사용자에 미치는 영향, 투자해야 하는 시간등을 고려하여 저의 첫번째 프로젝트로 "한국어 Q&A"를 골랐습니다. Q&A는 사용자가 입력한 간단한 질문에 대한 답을 하는 기능으로, 영어의 경우 이미 서비스가 되고 있었습니다. 예를 들어 'capital south korea'라는 질문을 치면, 검색 결과 제일 윗줄에 'capital:Seoul' 이라는 답변을 볼 수 있는 기능입니다.

우선 멘토와 함께 처음으로 시작한 일은 위키피디아처럼 '좋은 사실'이 많은 소스를 찾는 일이였습니다. 한국어 소스는 개수가 적었고 엑세스가 막혀있는 소스도 많아 안타까웠습니다. 그 다음 인덱싱을 하여 리포지토리(repository)를 만들었습니다. 또한 한국어 처리 부분 코드와 데이터를 추가했습니다.

이 과정에서 Google의 다양한 인프라 스트럭쳐를 많이 사용했습니다. GFS라는 Google 파일 시스템과 대용량의 데이터는 MapReduce라는 과정을 이용해서 처리했습니다. 이에 대한 더 많은 정보는 여기에서 찾아볼 수 있습니다.
리포지토리(repository)를 테스트 하기 위해서 Google 프로덕션 머쉰에서 작동되는 서버들을 제 로컬 머쉰에서 작동시켜 보았습니다. 복잡한 설정과정과 시행착오 끝에 드디어, 로컬 머쉰에서 Q&A 결과를 볼 수 있었습니다. 프로젝트의 끝이 보이는 느낌이였습니다.

그러나 테스팅과 평가라는 과정이 기다리고 있었습니다. 품질을 예측해보고 품질에 대한 평가가 만족스럽지 못하다면, 서비스를 시작할 수 없습니다. 평가를 위해 Google에서 사용하는 프레임웍을 이용했습니다. 사용자들이 찾아볼 수 있는 예상 질문들을 쏘잘(sawzall)이라는 병렬처리 인프라 스트럭쳐를 이용해서 데이터에서 뽑아낸 후, 문제점을 확인하고 품질 향상을 위해 알고리즘을 수정했습니다. 시간이 오래 걸리는 작업이긴 했지만 리포지토리나 질의 처리에 잠재했던 많은 문제점을 발견하고 개선해나감으로써, 많은 것을 배울 수 있었습니다.

한국에서 Q&A 서비스를 시작하고, Google 검색 결과에 제가 일한 결과물들을 직접 보고나니, 무엇보다도 신기한 감정이 앞섰습니다. 또한 큰 성취감을 맛보았습니다. 내가 한 일이 많은 사람에게 영향을 미칠 수 있다는 점이 Google만이 가지고 있는, Google에서 일하면서 느끼는 매력 중의 하나인것 같습니다.