이런 문제를 풀고 있어요
- 싱클리의 소셜 리스닝 서비스 Syncly Social의 데이터 수집 플랫폼을 만들어요.
- 단순히 웹 페이지의 HTML을 가져와서 파싱하는 것을 넘어, 대규모 데이터를 안정적으로 수집하는 'Scalable Web Scraping System'을 구축해요. 스크래핑은 언뜻 보면 “그냥 HTML 파싱하는 거 아닌가?” 라고 생각하실 수도 있는데 HTML 파싱은 스크래핑에서 아주 작은 부분일 뿐, 해결해야 할 엔지니어링 챌린지가 많아요.
- Scraping Algorithm Development (Scraper)
- 컴퓨팅 자원을 효율적으로 운영하기 위해, 웹 브라우저(Web driver)의 도움 없이 HTTP Client만으로 웹 애플리케이션과 상호작용하는 스크래퍼를 만들어요. 이를 위해서 웹과 브라우저가 커뮤니케이션하는 방식을 깊은 수준으로 이해하고, 마치 실제 브라우저처럼 보이는 정교한 상호작용을 만들어내는 것이 필요해요. 해당 상호작용을 구현하는 것은 높은 코드 복잡도를 동반하는데요. 복잡도를 잘 관리할 수 있도록 코드 설계에 대해 고민해요.
- 때로는 HTTP Client만으로 스크래핑할 수 없는 상황을 마주하는데요. 그런 경우엔 Webdriver를 활용하여 스크래퍼를 만들어요. Webdriver를 실제 Browser처럼 동작하게 하려면 다양한 기법을 사용해야 하는데요. 그런 기법들을 리서치하고 실제로 구현해요.
- Scraping Solution Integration Layer
- 수집 대상 웹페이지가 매우 많기 때문에, 시중의 다양한 스크래핑 솔루션을 활용하는 동시에 자체 Scraper 개발도 적극적으로 진행하고 있어요. 문제는 해당 Scraper 간 인터페이스가 모두 다르다는 것이에요. 다양한 인터페이스에 대한 어댑터 레이어를 둬서 다양한 솔루션을 통합적으로 관리하는 시스템을 만들어요
- Scraping Worker Orchestration System
- 하루 수천만 페이지의 데이터를 비용 효율적으로 수집하기 위해선 수백 개 규모의 Worker 를 작업량에 따라 유연하게 조절할 수 있어야 해요. 컴퓨팅 자원을 유연하게 scale up/down 할 수 있는 시스템을 구축해요.
- Fault-Tolerant System
- 웹 스크래핑은 네트워크 오류, 웹사이트 구조 변경 등 예측 불가능한 변수가 많은 환경(Fault-prone)에서 이루어지는데요. 이러한 불확실성 속에서도 시스템을 안정적으로 운영하려면 Fault-tolerant 한 시스템을 만드는 것이 중요해요. Fault-tolerant를 보장하기 위한 전형적인 패턴을 리서치하고 적절한 도구를 찾고 실제로 적용해요.
- 앞서 설명드린 Fault-prone한 환경으로 인해 장애(Failure)가 빈번하게 발생할 수 있는데요. 장애가 발생했을 때 빠르게 인지하고 합리적인 시간 안에 복구할 수 있는 모니터링 시스템(ELK, Grafana)을 구축해요.
어떤 일을 하게 되나요?
- 앞서 언급한 다양한 엔지니어링 과제들을 주도적으로 해결하게 됩니다.
- 해결해야 할 문제가 많은 만큼, 동료 엔지니어들과 함께 고민하며 하나씩 풀어나가게 됩니다.
- 본인의 역량, 관심사와 회사의 우선순위를 충분히 반영하여, 책임 있고 임팩트 있는 역할을 맡으실 수 있도록 협의합니다.
이런 분과 함께 하고 싶어요
- 기술적으로 도전적인 문제를 푸는 걸 즐기는 분
- 모르는 것을 적극적으로 여쭤보는 분. 적극적으로 커뮤니케이션하는 분
- 새로운 기술을 빠르게 학습하시는 분. 뛰어난 엔지니어로 성장하고 싶은 마음이 강한 분
- 브라우저와 웹 애플리케이션이 어떻게 상호작용하는지에 관심이 많은 분
- 확장 가능하고 신뢰할 수 있고 유지보수하기 용이한 시스템을 설계하는 것에 관심이 많은 분
- 지루해보이는 기술적 문제를 우아하게 해결하는 것을 좋아하는 분. 툴링과 자동화를 좋아하는 분
사용 중인 기술
- Backend: NestJS, TypeScript
- Database: MongoDB, Moongoose
- Orchestration: Temporal.io, BullMQ
- Infra: AWS, Sentry
누구와 함께 일하게 되나요?
- 무슨 일을 하는지도 중요하지만 누구와 함께 일을 하는지도 그에 못지 않게 중요하다고 생각해요. 함께 일하게 될 동료를 간단하게 소개드려요.
- 소셜 리스닝 제품(Syncly Social)의 엔지니어링을 전반적으로 책임지는 Senior Software Engineer와 함께 일하게 돼요. 해당 엔지니어는 다양한 규모의 회사(5-10명, 30-50명, 2-3000명)에서 소프트웨어 엔지니어로 일하면서 다양한 경험을 쌓아왔어요. 플랫폼 엔지니어링, 시스템 디자인, 웹 애플리케이션 개발, 디버깅 등에 전문성을 갖고 있어요.
근무환경
- 복지제도: 식비 지원, 교통비 지원, 4대 보험, 업무 유관도서 구매 지원
- 근무지: 판교 제2테크노밸리 (판교제2테크노밸리 버스정류장 도보 1분)
전형 및 합류 여정
1. 이력서 제출: 지금까지 경험하셨던 프로젝트/업무 경험을 적어주세요. 기술적으로 어떤 어려움이 있었고 어떻게 해결하셨는지를 구체적으로 작성해주세요. 형식은 자유입니다.
2. 과제 전형: 실무와 유사한 코딩 프로젝트를 드려요. 2일 정도 소요되는 과제를 7일 기간으로 드려요.
3. 기술 인터뷰: 수행하신 과제와 이력서를 바탕으로 기술적인 대화를 나눠요
4. 최종 합격
- 문의 사항이 있으면 언제든 이메일로 연락 주세요: luke@deepbluedot.io
싱클리는 이런 회사예요
- 미국 샌프란시스코에 본사를 두고 있는 AI 스타트업이에요. 실리콘밸리의 엑셀러레이터인 Y-Combinator에서 투자를 받았어요(YC Winter 23 Batch).
- VoC(Voice of Customer) 잘 듣고 인사이트를 얻어서 제품을 개발할 수 있도록 VoC를 분석해주는 B2B SaaS를 만들고 있어요. CS 분석 기능으로 시작해서 점점 더 다양한 채널의 고객의 소리를 분석하는 방향으로 사업을 확장해나가고 있어요. 요즘은 소셜 리스닝(소셜 미디어, 제품 리뷰, 커뮤니티, 뉴스, ...) 영역에 집중하고 있어요.
- VoC 분석 도구를 만드는 회사인 만큼, 저희도 VoC 기반으로 제품을 만들어요. 고객과 자주 이야기하면서 그들의 진짜 니즈를 찾고 제품에 반영하는 식으로 일을 해요. 다음 아티클을 읽어보시면 저희가 어떻게 일하는 팀인지 느껴보실 수 있어요: https://www.syncly.app/blog/5-lessons-learned-from-yc
- 제품팀은 한국에 있지만 타겟하는 시장은 미국(글로벌)이에요. 미국에 있는 사업팀과 긴밀하게 소통하면서 글로벌 타겟으로 제품을 만들고 있어요.