NEW 기획 디자인 개발 프로덕트 아웃소싱 프리랜싱

개발

트위터: 수십억 개의 이벤트를 실시간 처리하기

해외 유명 IT 기업은 각자 자신들의 블로그를 운영해 개발 방법과 기업 문화 등을 소개하고 있습니다. 요즘IT는 이러한 IT 기업 블로그의 콘텐츠를 번역해 소개하는 시리즈를 준비했습니다. 이들은 어떻게 사고하고, 어떤 방식으로 일하는 걸까요?

 

이번 글은 대표적인 소셜 네트워크 서비스 트위터의 ‘Processing billions of events in real time at Twitter’번역했습니다. 트위터는 어떻게 수십억 개의 이벤트를 실시간으로 처리할 수 있을까요? 아래 글을 통해 그들의 데이터 처리 방법에 대해 알아보겠습니다.

 
트위터 데이터 처리
출처: unsplash

 

트위터는 매일 페타바이트(PB) 규모의 데이터를 생산하며 약 4천억 개의 이벤트를 실시간으로 처리하고 있습니다. 이러한 이벤트는 다양한 데이터 소스로부터 생성되며, 하둡(Hadoop), 버티카(Vertica), 맨하탄(Manhattan) 분산 데이터베이스와 카프카(Kafka), 트위터 이벤트버스(Twitter Eventbus), GCS, 빅쿼리(BigQuery), PubSub 등 다양한 플랫폼과 스토리지 시스템을 사용하고 있습니다.

 

다양한 데이터 소스와 플랫폼에서 생성되는 수많은 유형의 데이터를 처리하기 위해 트위터의 데이터 플랫폼 팀은 일괄 처리를 위한 스캘딩(Scalding), 스트리밍을 위한 헤론(Heron), 일괄/실시간 처리를 위한 통합 프레임워크인 TSAR(TimeSeries AggregatoR), 데이터 검색과 소비를 위한 데이터 액세스 레이어(Data Access Layer)와 같은 도구를 자체 개발했습니다. 

 

그러나 엔지니어가 파이프라인을 실행하기 위해 사용하는 데이터 인프라스트럭처는 데이터의 빠른 증가로 인해 확장성을 유지하기가 매우 어렵습니다. 예를 들어, 대규모 데이터를 일괄 및 실시간으로 처리하는 상호작용과 참여(interaction and engagement)라는 파이프라인이 있습니다. 데이터 규모가 빠르게 증가함에 따라 우리는 스트리밍 대기 시간을 줄이고, 동시에 데이터 처리와 실시간 데이터 서비스에서 더 높은 정확도를 보장해야 하는 어려움에 직면하고 있었습니다.

 

트위터는 상호작용과 참여 파이프라인을 위해 다양한 실시간 스트림과 서버/클라이언트 로그에서 데이터를 수집하고 처리합니다. 이를 통해 서로 다른 집계 수준과 시간 단위 등 다양한 측정항목(Metric)[1]과 측정 기준(Dimension)[2]으로 트윗과 사용자 상호작용 데이터를 추출합니다. 집계된 상호작용 데이터는 특히 중요하며, 트위터의 광고 수익 서비스와 데이터 제품 서비스에서 노출 횟수와 참여도를 측정하는 데 사용합니다. 이뿐만 아니라 상호작용 데이터 조회 시, 서로 다른 데이터 센터의 스토리지에 있는 데이터로부터 낮은 지연 시간과 높은 정확도로 빠른 응답을 보장해야 합니다. 이러한 시스템을 구축하기 위해 전체 워크플로우를 전처리, 이벤트 집계, 데이터 제공 등 몇 가지 단계로 나누었습니다.

 

 

기존 아키텍처

트위터가 과거에 사용하던 아키텍처에 대해 먼저 알아보겠습니다. 먼저 일괄 처리와 실시간 파이프라인 처리를 수행하는 있는 람다 아키텍처로 구성되어 있으며, 서밍버드(Summingbird) 플랫폼 위에서 TSAR과 통합되어 있습니다. 람다 아키텍처에 대한 자세한 내용은 람다 아키텍처란 무엇인가?를 참고하세요. 

 

배치 컴포넌트는 HDFS(Hadoop Distributed File System)에 저장된 클라이언트 이벤트, 타임라인 이벤트, 트윗 이벤트와 같은 하둡 로그를 가져옵니다. 우리는 여러 개의 스콜딩(Scalding) 파이프라인을 구축했습니다. 이를 통해 원시 로그를 전처리하고 서밍버드 플랫폼에 공급했으며, 카프카 토픽(Kafka Topic)[3]에서 실시간 데이터를 가져왔습니다. 

 

아래의 그림처럼 실시간 데이터는 트위터 나이트호크(Nighthawk) 분산 캐시에 저장되고, 배치 데이터는 맨하탄 분산 스토리지 시스템에 저장됩니다. 그리고 쿼리 서비스는 이 두 개의 저장소로부터 고객 서비스에 필요한 데이터를 가져옵니다.

 

기존 람다 아키텍처
기존 람다 아키텍처

 

현재 3개의 서로 다른 데이터 센터에서 실시간 파이프라인과 쿼리 서비스가 동작하고 있습니다. 배치 작업에 소모되는 자원을 줄이기 위해 한 데이터 센터에서 배치 파이프라인을 실행하고, 다른 두 개 데이터 센터에 이를 복제하고 있습니다. 

 

트위터가 직면한 과제

대규모 데이터를 막힘없이 빠르게 처리해야 하므로 실시간 파이프라인에 대한 데이터 손실과 부정확성을 피해 갈 수 없습니다. 이벤트가 너무 많아 헤론 시스템 토폴로지의 컴포넌트인 볼트(Bolt)가 이를 제시간에 처리하지 못하면, 토폴로지 내부에 배압(back pressure)이 발생합니다. 또한 헤론 볼트는 가비지 컬렉션[4] 수집 비용이 크기 때문에 속도 저하가 발생하게 됩니다.

 

시스템에 장시간 배압이 가해지면 스파웃 지연이 헤론 볼트에 누적되면서 대기 시간이 길어집니다. 보통 이러한 문제가 한번 발생하면 토폴로지 지연이 감소하기까지 매우 오랜 시간이 걸립니다. 우리가 구축한 헤론 파이프라인에서 동작하는 스트림 매니저(토폴로지 컴포넌트 간의 튜플 라우팅을 관리함)가 자주 중단됐고 지연이 점차 증가했습니다.

 

이를 해결하기 위해 운영에서 현재 사용하는 방법은, 볼트가 스트림 처리를 다시 시작할 수 있도록 헤론 컨테이너를 재 시작하여 스트림 매니저를 불러오는 것입니다. 하지만 작업 과정에서 이벤트 손실이 발생할 수 있으며, 이로 인해 나이트호크 스토리지의 집계된 통계 정확도가 떨어질 수 있습니다.

 

배치 컴포넌트의 경우 페타바이트 규모의 데이터를 처리하고, 매시간 실행되며 맨해튼으로 데이터를 가져오는 등 많은 계산 과정을 동반한 파이프라인을 구축했습니다. 중앙 집중식 TSAR 쿼리 서비스는 맨해튼과 나이트호크 데이터를 통합하여, 고객 서비스를 위한 데이터를 제공하고 있습니다. 만약 실시간 데이터가 손실되면 TSAR 서비스가 집계가 완료되지 않은 측정 항목을 고객에게 제공하는 문제가 발생합니다.

 

이러한 데이터 손실 문제를 극복하고 시스템 대기 시간을 줄이며, 아키텍처를 최적화하기 위해 우리는 카파(Kappa) 아키텍처에 파이프라인을 구축해, 스트리밍 전용 모드로 이벤트를 처리할 것을 제안하고 있습니다. 카파 아키텍처에 대한 자세한 내용은 카파 아키텍처란 무엇인가?를 참고하세요. 이 방식은 배치 컴포넌트를 제거하고 실시간 컴포넌트에 의존해, 데이터의 낮은 대기 시간과 높은 정확도를 제공하므로 아키텍처를 단순화하고 배치 파이프라인에서 계산으로 인한 자원 소모가 없습니다.

 

 

새로운 아키텍처에서의 카프카와 데이터 흐름

새로운 아키텍처에서 카프카와 데이터 흐름
새로운 아키텍처에서의 카프카 동작 방식과 데이터 흐름

 

새로운 아키텍처는 트위터 데이터 센터(Twitter Data Center) 서비스와 구글 클라우드 플랫폼(Google Cloud Platform)을 기반으로 구축되었습니다. 먼저 온프레미스[5]에서 최소 한 번(at-least-once) 카프카 토픽 이벤트를 PubSub[6]토픽 이벤트로 변환하는 전처리 과정을 거칩니다. 구글 클라우드에서는 스트리밍 데이터플로우(Dataflow)[7]를 통해 중복된 데이터를 제거하고, 실시간 집계를 수행하고, 데이터를 빅테이블(BigTable)[8]에 동기화합니다.

 

이러한 아키텍처를 구현하기 위해 가장 먼저 한 일은, 필드 변환과 매핑을 담당하고 이벤트를 카프카 토픽으로 보내는 이벤트 마이그레이션 전처리 파이프라인을 구축하는 것이었습니다. 우리는 카프카를 기반으로 커스텀 스트리밍 프레임워크를 사용하여, 최소 한 번의 이벤트 전달이 가능한 스트리밍 파이프라인을 개발했습니다. 

 

그다음 이벤트 스트리밍을 담당하는 이벤트 프로세서를 개발했습니다. 이벤트 프로세서는 이벤트를 PubSub 형식으로 변환하고, 관련된 UUID와 기타 메타 정보로 구성된 이벤트 컨텍스트를 생성합니다. UUID는 다운스트림에서 데이터플로우 작업자가 중복을 제거하기 위해 사용합니다. 또한 트위터 데이터 센터에서 구글 클라우드로 최소 한 번 메시지를 보내도록 내부 PubSub 게시자에 대해 무한에 가까운 재시도 설정을 적용했습니다. 새 PubSub 이벤트가 생성되면, 이벤트 프로세서는 이를 구글 PubSub 토픽으로 보냅니다.

 

구글 클라우드에서는 실시간 집계를 위해 구글 데이터플로우에서 동작하는 트위터 내부 프레임워크를 사용합니다. 데이터플로우 작업자는 실시간으로 중복 제거와 집계를 수행합니다. 이러한 중복 제거 작업의 정확도는 시간 범위를 어떻게 지정하는지에 따라 달라집니다. 우리는 시스템 튜닝을 통해 지정된 시간 범위에서 가장 효율적인 중복 제거를 수행할 수 있었습니다. 우리는 데이터를 빅쿼리(BigQuery)[9]에 동시에 쓰고, 중복 비율을 지속적으로 모니터링함으로써 높은 중복 제거 정확도를 달성할 수 있다는 사실을 입증했습니다. 자세한 내용은 여기에서 확인하세요. 마지막으로 집계 데이터의 개수를 빅테이블에 기록합니다.

 

서빙 레이어(Serving Layer)[10]의 경우, 트위터 데이터 센터의 프론트엔드[11]에서부터 빅테이블, 빅쿼리 등 다양한 백엔드[12]를 비롯하여 트위터에서 개발한 LDC(Large Data Collider) 쿼리 서비스를 사용합니다. 전체 시스템은 짧은 지연시간으로(최대 10초) 초당 수백만 개의 이벤트를 스트리밍할 수 있으며, 온프레미스와 클라우드 스트리밍 환경 어디에서나 높은 트래픽을 처리하도록 확장할 수 있습니다. 우리는 온프레미스 스트리밍 시스템 전체에서 데이터 손실이 없도록 보장하기 위해 클라우드 PubSub을 메시지 버퍼로 사용하고 있습니다. 다음으로 정확하게 한 번(exactly-once)에 가까운 데이터 전송을 달성하기 위한 중복 제거가 수행됩니다.

 

이 새로운 아키텍처를 통해 배치 파이프라인 구축 비용을 절감할 수 있습니다. 실시간 파이프라인의 경우 더 높은 집계 정확도와 안정적인 저지연 데이터 전송이 가능해집니다. 또한 하나 이상의 데이터 센터를 운영하더라도 서로 다른 실시간 이벤트 집계를 따로 수행하지 않아도 됩니다.

 

 

평가하기

시스템 성능 평가

아래는 표는 두 아키텍처 간의 성능 차이를 보여줍니다. 새로운 아키텍처는 기존 아키텍처의 헤론 토폴로지와 비교하여, 더 낮은 지연 시간과 더 높은 처리량을 보여줍니다. 또한 새로운 아키텍처에서는 지연된 이벤트 숫자를 확인할 수 있고, 실시간 집계 시 시스템을 재시작해도 기존 이벤트가 사라지지 않습니다. 새로운 아키텍처는 배치 컴포넌트가 없는 한층 진보된 구성으로 설계를 단순화하며, 기존 아키텍처에 부담을 주었던 연산 부하를 줄여줍니다.

 

표 1. 기존 아키텍처와 새 아키텍처에의 시스템 성능 비교.

평가 항목

새로운 아키텍처

기존 아키텍처

카프카와 데이터플로우를 사용한 실시간 파이프라인

헤론을 사용한

실시간 파이프라인

하둡을 사용한

배치 파이프라인

처리

처리한 이벤트

~4백만 이벤트/초

~4백만 이벤트/초

매일 PB 규모의

데이터

실시간 계산

처리량

~600MB/s - ~1GB/s

~30MB/s - ~100MB/s*

N/A

배치 계산 비용

N/A

N/A

~3억 PM 밀리초

지연 시간

~10초

~10초 - 10분

~하루

집계

정확도

재시작 시

이벤트 유실

No

Yes

No

지연된

이벤트 처리

Yes

No

No

* 스트리밍을 위해 헤론 내부적으로 압축한 데이터

 

집계 결과에 대한 유효성 검사

집계된 숫자를 검증하는 것은 두 단계로 진행됩니다. 첫째, 중복 제거 전후에 데이터플로우 내에서 발생한 중복 이벤트 비율을 확인합니다. 둘째, 모든 키에 대해 원본 TSAR 배치 파이프라인의 수와 데이터플로우에서 중복 제거 후 확인한 숫자를 직접 비교합니다. 

 

첫 번째 단계에서는 원시 이벤트를 내보내는 별도의 데이터플로우 파이프라인을 만들어, PubSub에서 빅쿼리로 쓰기 전 중복을 제거했습니다. 그런 다음 시간에 맞춰 지속적으로 숫자를 계산하는 쿼리가 실행되도록 만들었고, 이와 동시에 중복 제거된 이벤트 수를 빅쿼리로 내보내는 또 다른 데이터플로우 파이프라인을 생성했습니다. 이를 통해 중복 이벤트 비율과 중복 제거 후, 변경된 비율을 비교할 수 있게 되었습니다.

 

두 번째 단계에서는 중복 제거된 집계 데이터를 빅쿼리로 내보내고, 트위터 데이터 센터의 원본 TSAR 배치 파이프라인에서 생성된 데이터를 구글 클라우드의 빅쿼리에 적재하는 유효성 검사 워크플로우를 구축했습니다. 이는 모든 키(key)의 개수를 비교하기 위해 예약된 쿼리를 실행합니다.

 

그 결과 우리는 트윗 상호작용 스트림에 대한 일괄 처리 데이터 대비 95% 이상의 정확도를 확보할 수 있게 되었습니다. 일치하지 않는 5% 미만의 데이터를 조사한 결과, 이는 원본 TSAR 배치 파이프라인이 새로운 스트림 파이프라인에서 캡처한 지연된 이벤트를 버리기 때문이라는 사실을 알아냈습니다. 이를 바탕으로 우리의 새로운 시스템이 더 높은 정확도를 보여준다는 것을 입증해냈습니다.

 

 

결론

트위터는 TSAR에 구축된 기존 아키텍처를 트위터 데이터 센터와 구글 클라우드 플랫폼으로 구성된 하이브리드 아키텍처로 이관함으로써, 수십억 개의 이벤트를 실시간으로 처리하고 짧은 지연 시간, 높은 정확도, 안정성, 아키텍처 단순성, 엔지니어 운영 비용 절감을 달성하고 있습니다.

 

 

다음 단계

다음 단계로 클라우드 리전에 장애가 발생해도, 빅테이블 데이터 세트를 언제나 사용할 수 있도록 탄력적인 환경을 구성할 것입니다. 또한 고객이 새로운 아키텍처로 이관하여, LDC 쿼리 서버를 사용할 수 있도록 도울 것입니다.


[1] 측정하고자 하는 실제 값으로 설치수, 방문수, 주문량 등이 여기에 해당하며 리소스 모니터링과 같이 소프트웨어나 하드웨어 모니터링에 사용되기도 한다.

[2] 분석의 기준이 되는 대상 또는 객체로 분석 기간, 데모그래픽 정보, 시스템 환경, 유입경로 등이 여기에 해당한다.

[3] 카프카에서 데이터를 구분하고 저장하기 위해 사용하는 단위.

[4] 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 것.

[5] 소프트웨어 및 솔루션을 클라우드 같이 원격 환경이 아닌 자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식.

[6] Publish/Subscribe의 줄임말로 메시지 기반의 미들웨어 시스템을 말함. Publisher는 어떤 Subscriber가 있는지 모르는 상태에서 메시지를 전송하고 Subscriber는 Publisher에 대한 정보 없이 자신에게 필요한 메시지만을 수신한다.

[7] 구글에서 클라우드 제공하는 스트리밍 분석 서비스로 자동 확장과 일괄 처리를 통해 대기 시간, 처리 시간 및 비용을 최소화한다.

[8] 2015년 구글에서 발표한 분산 스토리지 시스템으로 수천 대의 서버에 걸쳐 페타바이트 단위의 데이터를 대규모로 확장하도록 설계되었다.

[9] 대용량 데이터의 저장 및 분석에 뛰어난 성능을 발휘하는 구글 클라우드 서비스.

[10] 데이터 처리 아키텍처에서 배치에 의해서 처리된 요약 데이터를 제공을 담당하는 부분.

[11] 웹에서 동작하는 UI(User Interface) 부분을 말하며, 사용자가 눈으로 보고 인식할 수 있는 영역.

[12] 사용자 눈에 보이지 않는 영역으로 비즈니스 로직 처리와 데이터 저장 및 관리뿐만 아니라 웹사이트의 클라이언트 측(client-side)에서 모든 것이 매끄럽게 작동할 수 있게 해준다.

댓글 0

요즘IT의 번역글들

이 프로필을 만든 저만 해도 영어가 서툴러 영어로 된 기사는 읽는 게 더딥니다. 그래서 준비했습니다. 읽어볼만한 해외 소식들을 번역해 전합니다. We are the world.

디자인, 산출물 그 이상을 넘어

디자인

이 회사는 디자인에 투자하고 있는 회사일까요?

디자인

애자일은 정말 디자인을 배제하나요?

디자인

평판 관리가 프리랜서 경력에 미치는 영향

프리랜싱

리액트 네이티브 개발자들이 겪는 가장 빈번한 5가지 문제와 해결책

개발

“솔직히 우리가 하는 것은 스크럼이 아닙니다!”

기획

데이터 시각화가 인류를 위기에서 구한 세 가지 역사적 사건

디자인

NFT의 장밋빛 미래는 사실일까?

기획

피그마 토큰으로 디자인 시스템 만들기

디자인

디자이너+개발자 = 슈퍼팀 만들기

기획

1인 개발자로서 테크 스타트업을 운영하며

기획

웹 디자이너가 PX대신 REM을 사용해야 하는 이유

디자인

100개의 스타트업을 멘토링하며 깨달은 성공의 비밀

기획

중화권 앱 UI가 영미권 앱 UI와 다른 점 알아보기

프로덕트

내가 테크 리더로 일하면서 얻은 8가지 교훈

기획

모두가 즐길 수 있는 디자인 검토 회의 만들기

디자인

프로덕트 매니저에서 프로덕트 마스터로

기획

10배 이상 뛰어난 개발자가 되는 법

개발

제품 디자인 관점에서 바라보는 NFT 아바타 열풍

디자인

에어비앤비: 대규모 iOS 앱 개발 생산성을 위해 바꾼 것들

개발

스포티파이: 맞춤형 플레이리스트 개발 비하인드 스토리

개발

프리랜서가 일하게 될 15가지 유형의 프로젝트

프리랜싱

슬랙: 제품 원칙을 통해 다시 태어난 알림 기능

프로덕트

페이팔: 실시간 그래프 데이터베이스 분석을 통해 사기를 방지하는 방법

개발

슬랙: 4가지 애자일 가치와 방법

기획

스퀘어: 모바일 우선을 넘어 웹에서 누리는 모바일앱 경험

디자인

스포티파이: 카피를 언어로 만드는 UX 라이팅

기획

마이크로소프트: 디자인의 미래를 위한 4가지 원칙

디자인

메타: AR/VR 경험까지 고려한 디자인 청사진

프로덕트

슬랙: 훌륭한 마케팅 카피를 위한 5가지 원칙

기획

2022년 UX/UI 디자인 트렌드

디자인

구글: 가변 폰트의 놀라운 활용법

디자인

에어비앤비: 위기 상황에서의 디자인 원칙 5가지

디자인

어떻게 두 명의 인턴이 수백만 개의 코드들을 보호할 수 있었나

개발

Lattice로 마이크로 프론트엔드를 구축하는 법

개발

Cool Cats NFT를 구축하면서 배운 것

개발

웹 컴포넌트가 프론트엔드 프레임워크를 대신할까?

개발

당신이 NFT에 대해 알아야 할 모든 것

개발

우리에겐 이상하지만 개발자들에겐 일상인 일들

개발

Next.js 12에서 주목해야 할 5가지 변화

개발

스벨트 vs 리액트, 누가 더 뛰어날까?

개발

개발자를 위한 iOS 15의 새로운 기능

개발

내가 오픈소스를 싫어하는 이유

개발

프로덕트 매니지먼트 고객 여정 5단계

기획

클럽하우스의 인기는 모두 거품이었다?

프로덕트

데이터 기반 의사결정의 장점

기획

시각 디자인의 폐쇄성 법칙이란?

디자인

사용자 경험(UX) vs 서비스 디자인

기획

프로덕트 매니저는 하루 종일 무슨 일을 할까?

기획

제품 주도 성장은 어떻게 이루어지는가?

기획

UX를 망치지 않는 설득력 있는 배너 디자인

디자인

팝업(Pop-up)으로 불리는 것들에 대하여

디자인

드롭다운(Drop-down)으로 불리는 것들에 대하여

디자인

당신의 생각을 표현하는 새로운 이모지

디자인

가장 똑똑한 소프트웨어 엔지니어에게 배운 10가지 교훈

개발

성공적인 UX 프로젝트를 위한 가장 중요한 질문

디자인

2021년, UI 디자이너가 모바일 앱에서 흔히 저지르는 실수

디자인

IT 매니저가 되는 방법과 성공하기 위한 요소

기획

슬랙(Slack) 같은 앱을 만들려면 비용이 얼마나 들까?

개발

아웃소싱이 이토록 인기를 얻게 된 이유는?

아웃소싱

마케터가 UX 관련 역량을 키워야 하는 이유

기획

미니멀리즘 디자인의 핵심적인 요소들

디자인

새로운 소프트웨어 개발사가 필요하다는 7가지 신호

아웃소싱

2021년을 이끌어가는 프론트엔드 개발 트렌드 5가지

개발

PM을 성장시키는 학습 프레임워크

기획

UI 카피라이팅, 어떻게 써야 하나요?

기획

트렌드 예측: 경쟁에서 앞서는 방법

기획

제품 사고(product thinking)의 힘

기획

인하우스 vs 아웃소싱, 소프트웨어 개발 어떻게 하나요?

개발

그림을 못 그리는 사람도 쉽게 와이어프레임 그리는 방법

기획

스타트업 기업들에게 아웃소싱이 중요한 이유

아웃소싱

제품과 기능, 성공적으로 종료하는 방법 (下)

기획

제품과 기능, 성공적으로 종료하는 방법 (中)

기획

제품과 기능, 성공적으로 종료하는 방법 (上)

기획

UX 디자이너에게 반드시 필요한 12가지 스킬

디자인

패스워드 없는 세상이 오고 있다

개발

디자이너를 쉽게 잃는 방법 10가지

디자인

프론트엔드 코딩 작업에 영감을 줄 8가지 아이디어

개발

구글이 아웃소싱을 하는 이유: 아웃소싱 성공사례 5가지

아웃소싱

일 잘하는 PM이 되기 위한 로드맵 도구 5가지

기획

이제는 말할 수 있다! 아웃소싱에 대한 오해 11가지

아웃소싱

디자인 트렌드, 모던 미니멀 스타일의 UI 가이드

디자인

MVP 개발을 아웃소싱으로 해도 될까요?

개발

온보딩 효과를 높이는 '좋은' 귀차니즘 3가지

기획

게임처럼 즐겨라, 게임화 기법 TOP3

기획

시니어 소프트웨어 엔지니어는 어떻게 일할까?

개발

프로덕트 매니저가 글을 잘 써야 하는 이유

기획

2030년엔 사라질 수도 있는 프로그래밍 언어 5가지

개발

고객들이 언제나 옳은 것은 아니다

기획

유저 스토리는 무엇인가?

기획

고객 성공을 위한 14계명

기획

8px 그리드의 시대가 끝나고, 4px 그리드의 시대가 열릴까?

디자인

모바일 앱은 더 이상 스타트업에게 좋은 아이디어가 아니다

기획

과연 구글의 UX 강좌는 도움이 될까요?

디자인

프로덕트 매니저 여러분, ‘소비자의 요구사항 수집’을 그만두십시오

기획

고객 여정과 경험 지도의 차이점

기획

내가 AI 업계를 떠난 이유 5가지

기획

모달윈도우(팝업)를 디자인할 때 생각할 9가지 원칙

디자인

대기업 vs 중소기업, B2B SaaS 스타트업을 위한 시장은?

기획

내가 개발 인터뷰에서 면접자에게 감동한 이유

개발

HTTP의 새로운 메서드, 서치(SEARCH)에 대하여

개발

세상의 모든 프로덕트 디자이너를 위한 5가지 심리학 원칙

디자인

2021년 테스트 자동화 트렌드 리포트 (下)

개발

2021년 테스트 자동화 트렌드 리포트 (上)

개발

아마존과 스포티파이는 어떻게 사용자를 유지하고 측정할까?

기획

UX 디자이너라면 필수적으로 알아야 할 5가지 법칙

디자인

앵귤러 vs 리액트, 2021년의 승자는?

개발

2021년, SaaS 스타트업 시작을 위한 놀라운 아이디어 10가지

기획

디지털 제품 관리에서 B2B와 B2C 사이의 차이점은?

기획

빠르게 실행할 수 있는 ‘제품 요구사항 문서(PRD)’ 만들기

기획

더 나은 제품을 위한 프로덕트 메트릭스 가이드

기획

노 코드(No Code) 트렌드로 프로그래머들은 일자리를 빼앗길까?

개발

넷플릭스의 플랫폼: 코스모스(Cosmos)에 대하여

프로덕트

비즈니스와 애자일 조직은 어떻게 친해질 수 있을까요?

기획

효과적인 제품 전략 세우기: 다수의 전략적 트랙(MuST) 활용

기획

1년 만에 이메일 마케팅 효과를 극대화했던 방법

기획

솔루션 아키텍트를 위한 팁: 아키텍처 다이어그램의 5가지 유형

개발

새로운 맥 OS ‘빅서’에 대한 UX 디자이너의 생각

디자인

디자인 트렌드, 뉴모피즘의 정석

디자인

스스로 학습하는 UI/UX 디자이너가 되기 위한 2021년 로드맵, 3편

디자인

스스로 학습하는 UI/UX 디자이너가 되기 위한 2021년 로드맵, 2편

디자인

2021년 모바일 UX 트렌드 10가지

디자인

스스로 학습하는 UI/UX 디자이너가 되기 위한 2021년 로드맵, 1편

디자인

앱 설정 기능의 UX를 개선하는 효과적인 방법

디자인

다크모드 UI 디자인의 원칙

디자인

온라인 고객 경험을 개선하기 위한 5가지 방법

기획

신생 스타트업에서 일하는 프로덕트 매니저를 위한 현실적인 조언

기획

웹 개발자와 소프트웨어 개발자의 차이는 무엇인가요?

개발

랜딩 페이지 디자인을 개선하는 13가지 꿀팁

디자인

오프라인 비즈니스가 온라인에서 존재감을 가져야 하는 이유 5가지

기획

상향식 가격 책정 및 패키징 정책: 사용자 여정을 가이드로 활용하기

기획

B2B 제품의 UX, 그것은 숨겨진 영역인가요?

기획

상단 내비게이션 vs 사이드 내비게이션, 어느 것이 더 나을까?

디자인

자동완성 검색 기능 UX 설계를 위한 8가지 팁

디자인

프로덕트 매니저는 전문적인 IT 기술을 갖춰야 하나요?

기획

실리콘밸리 51개 기업들이 말하는 프로덕트 매니저의 역할 9가지

기획

아웃소싱에 대한 모든 것

아웃소싱

앱 디자인 가이드, 사람들이 즐겁게 사용할 수 있는 앱을 만드는 법

디자인

처음부터 완제품이 아니라 ‘MVP’를 만들어야 한다

기획

플러터 vs 리액트 네이티브 vs 네이티브, 성능이 더 우수한 것은?

개발

스타트업 프로덕트 매니저로 성장하는 법, 30-60-90일 플랜

기획

당신의 두뇌는 진보하고 있다: 성취감을 위한 3가지 전략

기획

디자이너들을 편하게 해주는 HTML/CSS 마법 10가지

디자인

코딩의 미래는 ‘노 코드(No Code)’이다

개발

내가 엔지니어링 매니저로 일하면서 저지른 실수들

개발

내가 롬 리서치(Roam Research)를 좋아하는 이유와 실제 사용법 (下)

기획

내가 롬 리서치(Roam Research)를 좋아하는 이유와 실제 사용법 (上)

기획

프로그레시브 웹 앱(PWA)이란 무엇이며, 왜 필요한가?

개발

PWA vs 네이티브 앱, 어떤 것을 선택해야 할까?

개발

UI 디자인에 여백을 활용하는 8가지 팁

디자인

마이크로소프트와 링크드인의 새로운 시도, 프리랜서 마켓에 도전장을 던지다

기획

토마스넷은 왜 가입자 수를 폭발적으로 늘려준 테스트 결과를 거부했을까?

기획

잘 팔리는 기업용 소프트웨어 디자인하기

디자인

파이어베이스(Firebase)란 무엇인가? 파이어베이스 심층 탐구 : 하편

개발

파이어베이스(Firebase)란 무엇인가? 파이어베이스 심층 탐구 : 중편

개발

파이어베이스(Firebase)란 무엇인가? 파이어베이스 심층 탐구 : 상편

개발

업워크(Upwork)가 조사한 요즘 가장 인기 좋은 개발 기술 15가지

개발

일자리 산업이 휴먼 클라우드(human cloud)에 적응하는 방법

기획

팬데믹 이후 세계에서의 디지털 가속화는 어떤 모습일까?

기획

같은 분야를 다룬 글들을 권해드려요.

요즘 인기있는 이야기들을 권해드려요.

일주일에 한 번!
전문가들의 IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.

일주일에 한 번! 전문가들의 요즘IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.