전체 글 24

슬랙(slack)의 스트리밍 데이터 파이프라인

Slack은 업무 협업 툴과 서비스를 제공하여 업무의 생상선을 높이는데 주력하는 클라우드 기반 서비스 기업이다. 많은 국내 IT 기업에서 잔디(Jandi), 카카오톡, 라인 등을 사용할 것이다. 해외에서는 주로 Slack과 Microsoft Teams을 사용한다고 알려져 있다. 오늘 주제와는 무관하지만 오늘자 기준 업계 근황을 살펴보자면 혜성같이 등장한 Slack이 업무 협업툴로 해당 섹터를 지배하려 하자 기존 메신저 강자였던 Microsoft가 모바일 시대 메신저 시장에서 처참한 패배를 딛고 Azure 기반 Paas를 위해 야심 차게 만든 Teams를 끼워 팔기(?) 시작하면서 새로운 강자로 떠올랐다. 이에 위기를 느낀 Slack과 아마존 AWS는 최근 자택 근무시대에 떠오르는 화상 회의 솔루션 Zoo..

무료정보 2022.02.03

트립어드바이저의 실시간 대용량 데이터 개선 방법

이번 포스팅에서는 해외여행 필수 앱인 트립어드바이저가 어떻게 Samza를 성공적으로 도입했는지 알아보도록 하겠다. 트립어드바이저가 생소한 사람들을 위해 잠깐 간단히 설명을 하도록 하겠다. 여행 정보를 제공하는 서비스 업체이고 전 세계 870만 개의 숙박시설, 항공사, 맛집, 관광명소 등에 관한 8억 6천만여 건의 여행자 리뷰와 후기를 제공하는 세계 최대의 여행 플랫폼이다. 2019년 기준 월간 방문자 수는 약 4억 6300만 명에 달한다고 한다. 세계 여행지 곳곳 마다 방대한 리뷰를 가지고 있어 해외여행 준비를 할 때 해외에 도착했을 때 참고하는 필수적인 앱이라고 할 수 있겠다. 하루에 수억명의 방문자와 수십억 데이터를 다루는 사이트인 만큼 어떻게 데이터를 다루는지 상당히 궁금한 곳이기도 하였다. Sam..

무료정보 2022.02.02

카프카의 사촌 Apache Samza - LinkedIn 사용 사례

이번 포스팅에선 링크드인의 아파치 Samza 사용 사례를 알아보도록 하겠다. 아파치 Samza는 LinkedIn에서 시작된 프로젝트여서 개인적으로 어떻게 사용하고 있는지 어떤 목적을 위해 만들었는지 궁금했다. 이번 사례를 통해서 Samza 및 스트리밍 시스템에서 더 심도 깊은 인사이트를 얻으면 좋겠다는 마음으로 조사를 했다. LinkedIn은 이메일 커뮤니케이션을 을 최적화하기 위해 Samza를 활용하여 상태 처리 시스템(Stateful stream processing system)인 Air Traffic Controller를 구축하였다. 링크드인은 많은 전셰계 많은 구직자 고용주 그리고 헤드헌터 등을 위한 다양한 서비스와 플랫폼을 제공하는 전문 네트워킹 기업이다. 사용자가 증가함에 따라 다양한 서비스를..

무료정보 2022.02.01

[시스템 디자인] CAP 이론 정리

CAP 정리(Theorem) 중요성 데이터를 보관할 장소로 고전적으로 사용하던 RDBMS SQL 데이터베이스나 요즘 많이 사용되는 카산드라, 몽고 DB 같은 No-SQL 저장소를 사용하게 된다. 문제는 분산환경에서 현재 해결해야 하는 비즈니스적 문제에 최대한 잘 맞고 어울리는 것을 선택해야 한다는 것이다. 그러기 위해선 유행이나 대세에 따라서 요즘 뜨는 기술을 선택하는 것보다는 검증된 원칙에 따라서 고를 수 있으면 좋을 것이다. 면접이나 실무에서 자신이 선택한 데이터베이스가 문제해결에 도움이 되는지를 설명하는 것은 거의 필수적이다. "왜 MySql을 도입했나요?" 혹은 "왜 카산드라를 선택하였나요?"와 같은 뻔한 질문에 말문이 막히지 않고 기술적으로 신뢰를 주기 위해서 CAP 정리에 따라서 설명하면 된다..

무료정보 2022.01.31

[코딩테스트] 가장빠르게 역순 링크드리스트 만들기

문제 : 주어진 단일 연결 리스트를 역순으로 만들어라 예제: Input: 1->2->3->4->5->NULL Output: 5->4->3->2->1->NULL 정말 유명하고 고전적이면서 간결한 문제이다. 기본적인 문제인 만큼 2가지 방법으로 풀 수 있다는 것을 알아두고 보자마자 2가지 방법으로 풀 수 있도록 연습하기를 권장한다. 재귀적인 방법과 반복문을 사용하는 방법 두 가지 모두를 알아보도록 하겠다. 이번 문제도 Leetcode에서 코딩을 작성하고 답변을 확인할 수 있다. (https://leetcode.com/problems/reverse-linked-list/) 참고로 제대로 풀었다면 공간 복잡도는 O(1)이 되어야 한다. 만약에 다른 보조 메모리를 사용하여 O(N)으로 풀었다면 O(1)으로 풀 수..

무료정보 2022.01.31

[셀레니움] DOM 여러 원소 찾기 (Locating multiple elements)

이전 포스팅에서 하나의 원소 위치를 찾는 방법에 대해서 알아보았다. 이번 포스팅에서는 여러 원소를 찾는 방법에 대해서 알아보도록 하겠다. 하나의 원소 찾는 방법부터 보고 싶다면 이전 포스팅을 참고하길 바란다. 여러 원소 위치 찾기 이전 글에 이어서 치즈를 찾는 예제로 시작해보겠다. 웹 브라우저 화면에는 우리가 제일 좋아하는 치즈의 순서 목록을 가지고 있을 가능성이 있다. … … … … 치즈를 많이 가져올 수 있으면 많이 가져오는 것이 의심할 여지 없이 좋은 방법이다. 각 치즈를 하나씩 가져오는 하나의 원소 위치 찾는 방법을 사용하면 조금 번거로울 수 있다. 그렇기 때문에 한 번에 많은 치즈를 가져올 수 있는 findElements(By)라는 고급 방법을 사용 가능한 것이다. 이 방법은 웹 원소의 컬렉션을..

무료정보 2022.01.30

[셀레니움] HTML 원소 위치 찾기 (locating elements)

이번 포스팅에서는 셀레니움과 웹 드라이버를 사용하여 웹 페이지 상에서 특정 HTML 태그(Tag)를 찾는 법을 소개하도록 하겠다. 필수 준비믈로는 selenium 라이브러리와 웹 드라이버가 설치 되어있어야 실습이 가능하다. 이전 포스팅에 자세히 설명해 두었으니 필요하면 참고 하길 바란다. HTML 원소 위치 찾기 웹 드라이버를 사용할 때 배우는 가장 기본적인 기술 중 하나는 웹 페이지에서 특정 원소를 찾는 방법이다. 웹 드라이버는 ID 속성으로 요소를 찾을 수있는 내장 선택 기능을 제공하고 있다. WebElement cheese = driver.findElement(By.id("cheese")); 위 예제에서 볼 수 있듯이 웹 드라이에서 원소의 위치는 웹드라이버 인스턴스 객체를 사용하여 찾을 수 있다. ..

무료정보 2022.01.29

셀레니움 - 테스트의 종류

반드시 셀레니움을 사용하지 않더라도 알아두면 유용한 테스트의 종류에 대해서 알아보도록 하자. 생각보다 많은 테스트 종류가 있고 어떤 곳에서는 혼용하여 사용하여 헷갈리지만 정석의 정의를 알아두면 나중에 커뮤니케이션할 때 도움이 될 것이다. 테스트의 종류 Acceptance testing (인수인계 테스트) 이 테스트는 시스템과 기능이 고객의 기대와 요구사항을 충족하는지 판단하기 위해 수행된다. 이러한 유형의 테스트는 일반적으로 고객의 협조나 피드백을 포함하며 아래 질문에 대한 답을 하는 검증 테스트이다. 우리가 올바른 제품을 만들고 있는가? 웹 애플리케이션의 경우에는 테스트 자동화를 하여 셀레니움으로 직접 예상되는 사용자의 행동을 시뮬레이션할 수 있다. 이 시뮬레이션은 저장해서 재생이 가능하며 여러 프로그..

무료정보 2022.01.28

셀레니움 - 테스트 자동화 3편

2편에 이어서 테스트 자동화 관련된 마지막 포스팅이다. 2편 예제에서 언급했던 Page Object (페이지 객체)를 알아보고 이것이 어떻게 테스트 코드에 쓰여야 하고 쓰이는지 예제를 통해 알아보고 테스트 자동화에 대한 정리를 해보도록 하자. 이어지는 내용이므로 2편을 읽지 않았다면 먼저 보기를 권장한다. Page Object Model (페이지 객체 모델) 일단 Page Object(페이지 객체) 모델은 나중 포스팅에서 더 자세히 살펴보도록하고 지금은 간단한 개념을 소개하겠다. 테스트는 웹 사이트의 페이지 내에서 사용자의 관점에서 수행되는 작업으로 구성되어있어야 한다. 이 페이지는 객체로 저장되고 여기에는 웹 페이지 구성 방법과 작업 수행 방법에 대한 구체적인 정보가 포함되어 있다. 이 중 테스터로서 ..

무료정보 2022.01.27

셀레니움 - 테스트 자동화 2편

이전 포스트에 이어서 테스트 자동화를 예제와 곁들이면서 살펴보도록 하겠다. 이전 글에서는 테스트 자동화 도입에 앞서 고려할 점을 알아보았다. 예제와 함께하는 테스트 자동화 길동이는 고객들이 유니콘을 특별 주문 제작 할 수 있는 웹 사이트를 만들었다. 일반적으로 예상되는 워크플로는 다음과 같다. 계정 만들기 자신만의 유니콘 꾸미기 장바구니에 추가 장바구니 결제 리뷰 남기기 위와 같은 작업을 수행하는 하나의 셀레니움 스크립트(코딩)를 만드는 것에 대한 유혹을 느낄 것이고 많은 사람들이 실제로 그렇게 할 것이다. 하지만 이러한 유혹을 물리쳐야 한다. 왜냐하면 이러한 방법은 시간이 오래 걸리고, 페이지 렌더링 타이밍 문제와 관련된 몇 가지 일반적인 문제가 발생하며, 실패하더라도 무엇이 잘못되었는지 진단하기 위한..

무료정보 2022.01.26