510
고성능 파이썬(2판)
지금까지는 이런 구조가 잘 작동했으며, 이를 사용해 큰 노력 기울이지 않고도 다양한 출처에
서 데이터를 입수해 처리하는 꽤 복잡한 애플리케이션을 구축할 수 있었다. 하지만 이 구조에
도 단점이 있다. 각 앱이 공통 코어 모듈에 의존하므로 코어에 속한 코드를 변경하거나 코어를
사용하는 모든 앱이 항상 최신 상태를 유지하도록 하는 작업이 상당히 커질 수 있다.
우리는 현재 이 코어 소프트웨어를 재설계해서 더 서비스 지향 아키텍처(
SOA
)적인 방식으로
움직이려는 프로젝트를 진행 중이다. 이런 아키텍처 변경을 수행하기에 적절한 시점을 찾아내
는 일은 플랫폼이 성장함에 따라 대부분의 팀이 직면하게 되는 큰 도전 과제다. 구성 요소를 개
별 서비스로 구축하려면 부가비용이 든다. 또한 각 서비스를 구축하는 데 필요한 깊은 지식은
초기 개발 단계를 거친 후에야 얻어지기도 한다. 이때 이미 구축한 아키텍처가 당면한 문제를
해결하는 데 장벽이 되기도 한다. 아무쪼록 우리가 아키텍처적 선택 사항을 다시 살펴보고 더
나은 시스템을 만들기에 적당한 시점을 선택했기를 바란다. 시간이 지나면 알게 될 것이다.
12.8.3
고성능 실시간 문자열 매칭
우리는 트위터 스트리밍
API
에서 많은 데이터를 소비한다. 트윗을 스트림으로 가져오면서 입
력 문자열을 주어진 키워드 집합에 매치시켜 각 트윗이 추적 중인 용어 중 어느 것과 관련 있는
지 판단한다. 입력이 들어오는 속도가 느리거나 키워드 집합의 크기가 작다면 괜찮지만, 초당
수백 개의 트윗을 ...