[GN#94] B2B SaaS Onboarding 가이드와 2021년 현황

2021-04-19 ~ 2021-04-25 사이의 주요 뉴스들
SaaS 서비스들은 고객들이 초기에 제품을 좀 더 잘 이해하고 유용하게 사용할 수 있게 해주는 온보딩 가이드를 제공하고 있습니다. B2B SaaS 서비스의 경우에는 사용자/의사결정자/영업팀/고객성공팀 등 이해관계자들이 더 많다 보니 각각의 목적을 달성할 수 있는 세밀한 프로세스가 필요한데요. 온보딩 체크리스트 서비스인 Arrows 가 100+개의 온보딩 성공사례를 분석해서 가이드를 작성했습니다. 온보딩을 단순한 서비스 소개가 아니라 "제품을 구매함으로써 얻게 될 가치를 고객이 경험하는 순간" 라고 정의하고, 이 "Aha Moment" 에 더 빨리/많이/쉽게 도달하게 만드는 방법들을 연구해야 한다고 얘기합니다. 또한 Product Growth Platform 인 UserPilot 이 1200+개 SaaS들의 온보딩 실태를 조사한 통계자료도 공개가 되었는데요. 실제로 96% 이상의 서비스가 온보딩 경험을 제공하고 있지만, 비디오/웰컴화면/개인화/프로덕트 투어 같이 그 깊이는 서로 다른 것을 알 수 있습니다. 두 개의 글을 참고하셔서 자신만의 훌륭한 온보딩 가이드를 만들어보시기 바랍니다.

긱뉴스 오픈 후에 가장 많이 공유된 프로그래밍 언어는 아마도 Rust 일듯 합니다. 얼마 전엔 1Password가 자신들이 프로덕션 환경에서 어떻게 Rust를 사용하고 있는지를 인터뷰한 글도 화제가 되었는데요. Microsoft가 Rust 입문자를 위한 5시간짜리 기초 가이드를 공개했습니다. 한국어 번역도 되어 있으니 이번 기회에 Rust 를 한번 배워보세요.


✓ 사내에서 슬랙을 쓰신다면 뉴스채널에 GeekNews SlackBot 을 추가하여 편하게 새 글을 받아보시고, 멤버들에게도 공유해주세요.
✓ 주위분들께 긱뉴스 위클리 - https://news.hada.io/weekly 를 추천해 주세요.
Twitter , Facebook 에서도 긱뉴스를 받아 보실 수 있습니다.

매주 월요일 아침, 지난 일주일간의 GeekNews 중 엄선한 뉴스들을 이메일로 보내드립니다.


B2B SaaS Onboarding 가이드

온보딩 체크리스트 서비스인 Arrows가 자신들의 제품을 만들면서 100+개의 온보딩 성공 사례를 분석하여 알게된 것들을 정리

#1 모든 회사는 자신만의 '온보딩'이 뭔지 정의해야함
- Arrows는 "온보딩은 제품을 구매함으로써 얻게 될 가치를 고객이 경험하는 순간" 이라고 설정
ㅤ→ "Aha Moment"
- 이걸 명확히 정의함으로써 제품과 회사의 모두에게 게임체인저가 될 수 있음
- 온보딩 된 상태에 대해서 조직이 모두 동일하게 이해하면, 같은 목표에 집중할 수 있게 됨
ㅤ→ 세일즈 팀은 고객에서 "Aha Moment"를 팔고
ㅤ→ 고객성공 팀은 고객들이 "Aha Moment"에 도달하도록 하고
ㅤ→ 제품 팀은 "Aha Moment"를 활성화 및 강화
- 이 "Aha Moment"는 고객들이 좋은 결정을 내렸다고 믿게 만들고, 온보딩 프로세스에 참여하도록 동기를 부여

#2 새로운 온보딩 프로세스로 변경하는건 어려움
- 첫번째 CSM(Customer Success Manager, 고객 성공 관리자)를 고용하고 담당자가 늘어나지만..
- 고객이 이탈하기 시작하는데 이유를 알지 못하고, 유지하기 힘들다는 생각이 들기 시작하면서 한계점에 도달
- 하이터치(고객과 매우 긴밀한 관계를 가지는) 온보딩 프로세스에 필요한 것들
ㅤ→ Sales Hand-off : 영업팀에서 고객성공팀으로의 이관
ㅤ→ Kick-off Call : 온보딩 프로세스 기대치 설정, 기한, 양쪽에서 할 업무들, 연락처
ㅤ→ Implementation : 데이터/프로세스 임포팅, 하드웨어 설정, 소프트웨어 설치, 시스템 테스팅
ㅤ→ Training : 고객들이 자신의 직원을 교육하도록 돕기, 모두가 제품사용을 이해하도록 만들기, 런칭 준비
ㅤ→ Launch/Rollout : 고객이 제품을 실시간으로 사용하기 시작하고, 실제 문제를 해결 하기 시작
ㅤ→ Review : 런칭이 어떻게 진행되었는지, 어떻게 사용하는지, 향후 사용계획에 대한 고객 피드백 받기

#3 영업팀과 고객 성공팀 간에 부드러운 이관하기
- 고객이 팀간에 이관될 때의 방식이 회사에 대한 경험의 분위기(tone)을 결정
- 종종 이 이관이 울타리 너머로 던져지는 것 처럼 느껴지는데, 고객은 이걸 바로 알 수 있음.
- 성공적으로 이관되려면 고객은 새로운 담당자가 누군지 알게 되고 하는 과정이 연속성 있게 느껴져야함
ㅤ→ 영업팀은 기존 관계와 정보들을 제대로 전달해서 고객이 처음부터 다시 시작하는 것 처럼 느끼지 않게 해야함
- 연속성을 제공하는 두가지 방법
ㅤ→ 이관 미팅에서 영업 대표가 초기 5분간 참여해서, 고객을 성공팀에 소개하고, 고객의 목표에 대해서 간략히 공유하고 빠짐
ㅤ→ 고객이 구매를 하기 전에 성공팀 멤버를 미리 지정. 차후 미팅에 초기부터 참여시킴. 자연스럽게 이관이 가능
- 일반적으로 두번째 옵션을 권장
- 영업팀이 빠지기 전에 고객이 온보딩에 성공하면 보상하는 제도가 있는 것도 좋음.

#4 마감 및 타임라인을 이용해서 계속 움직이게 할 것
- 좋은 고객 성공 계획은 온보딩 절차의 모든 단계를 설명하고 일정 또는 기한을 설정

성공계획의 예) CPA회사용 SaaS
- Kickoff (구매후 몇일 또는 일주일 후)
ㅤ→ 계정 생성 (15 분)
ㅤ→ KPI 결정 및 문서화 (30 분)
ㅤ→ 첫번째 클라이언트 롤아웃 후보자 결정 (30 분)
- 시스템 셋업 (킥오프 날 시작해서 1~4주간)
ㅤ→ 커스텀 데이터 연결 설정 (2 시간)
ㅤ→ 기존 데이터 임포트 (1 시간)
- 롤아웃 (시스템 셋업후 바로)
ㅤ→ On Call시 롤아웃 클라이언트와 포털 공유 (60 분)
ㅤ→ 롤아웃 클라이언트한테 FAQ 전달 (15 분)
- 체크인 (롤아웃 하고 2-4주후)
ㅤ→ 내부 사용자 및 롤아웃 클라이언트로 부터 피드백 수집 (60 분)
ㅤ→ SaaS 회사와 체크인 통화 스케줄링 (15 분)
ㅤ→ 진행 상황 및 KPI 리뷰를 위한 체크인 통화 실행 (30 분)

#5 여러 이해관계자를 조율할 담당자 지정
- 온보딩 중에 단일 연락 창구가 될 고객측 담당자 지정이 중요 "Point Person"
- "Point Person"은 프로젝트에 대한 오너십을 가지고, 이 제품을 실행하기 위해 드라이브 할수 있는 사람

#6 고객 온보딩 시에 이메일은 사용하지 말 것
- 이메일은 계속 참조해야할 정보를 공유하기 위해 만들어 진 것이 아님
ㅤ→ 구글 문서, Trello 보드, Arrow의 고객 성공 플랜 같은 웹페이지 등이 좋음
- 통화/회의중 나온 내용을 메모 가능하면 좋음
- CSM 이 작업과 마감일등을 할당하면 미리 알림이 가도록 할 것

#7 모든 고객에 대한 고수준 시각화 유지(High-level Visibility)
- 여러명의 고객을 동시에 온보딩 할때 각각을 빠르게 평가할 수 있어야 함
- 각 고객의 상태를 실시간으로 파악

#8 복잡한 온보딩 중에도 고객의 업무 수행은 유지
- 고객들이 온보딩중에 이탈하는 주요 이유 : 모멘텀을 잃거나 온보딩이 너무 복잡
- 새로운 프로세스를 배우는 것에 자연스럽게 저항을 하게 됨
ㅤ→ 고객이 이 제품에 투자한 '이유'를 전면에 두는게 좋음
ㅤ→ 온보딩 프로세스의 최종 목표에 대한 시각적 알림을 포함시키는 방법을 이용
- 여러 고객이 온보딩 프로세스의 같은 위치에 머물러 있다면 복잡하다고 생각할수 있음
ㅤ→ 사기성을 확보하고 단순화
ㅤ→ 또는 너무 많은 것을 너무 일찍 요청하는 걸수도 있음
ㅤ→ 단계별로 Aha Moment를 가질수 있도록 할 것

#9 최고의 온보딩 경험을 줄 수 있도록 고객들을 세그먼트로 나눌 것
- 고객이 다양해 질수록, 세그먼트별로 온보딩 프로세스를 만들 필요가 있음
- 처음엔 포괄적인 온보딩 템플릿으로 시작하고, 각 고객별로 필요없는 작업을 제거하거나 누락된 항목을 추가
- 이렇게 템플릿 편집이 계속 될 때, 각 고객들의 공통점을 찾아 보는 것을 통해서 세그먼트 구분에 대한 데이터를 갖게 됨

국내에선 성공한 SaaS 서비스들이 많지 않다 보니까, 이런 경험 공유 자체가 좀 생소할 수 있을텐데요.
SaaS 들은 대부분 고객들이 그 제품의 가치를 인식하게 만들고, 그 이후 구매가 이뤄지면 다시 그걸 직접 적용해보는 온보딩 절차를 거치게 됩니다.
이 온보딩 절차를 어떻게 하면 효율적으로 만들수 있을까를 정리한 문서라고 보시면 될 듯합니다.

 
SaaS Onboarding의 현재 (2021)

1200+개 SaaS 회사들의 "온보딩" 프로세스를 조사한 통계
- 회원 가입시 1개 이상의 인앱 온보딩 사용자 경험 제공하는 서비스가 96%
- 마찰* 없는 가입 플로우 제공 74%
- 온보딩 비디오 활용 46%(B2B), 37%(B2C)
- 웰컴 화면 제공 79%
- 개인화된 온보딩 71%

- 온보딩 프로세스 제공 안하는 회사는 8%(B2B), 12%(B2C)
- OAuth 사용하는 회사 18%(B2B), 30%(B2C)
- 이메일 인증 필수인 회사 62%
- 가입시 입력해야할 필드가 4개 이하인 회사 45%
- 온보딩 체크리스트 사용 36%(B2B), 33%(B2C)
- Emtpy State 활용 23%(B2B), 16%(B2C)
ㅤ→ 처음 가입하고 아무 것도 안보이는 화면에서 뭔가 템플릿으로 경험을 제공하는 것
ㅤ→ "To Do가 비었네요. 이런 걸 만들어보시면 어때요?"
- 온보딩시 목표(Goals) 제공 35%(B2B,B2C)
- 2차 온보딩 제공 회사 29%(B2B), 16%(B2C)
ㅤ→ 특정 온보딩 목표 달성시 축하와 함께 더 고급 기능을 익히게 제공 하는 것

- Product Tour (15%) 나 Interactive Workthroughs(9%) 를 제공하는 회사가 많지 않은데, 개발에 꽤 많은 자원이 들어간다고 생각하기 때문
ㅤ실제로는 그렇게 큰 노력없이도 만들수 있고, 워크쓰루를 하고나면 참여도가 급격히 상승하는 것을 볼수 있음.
ㅤ프로덕트 투어를 만든다면 주요 기능 하나에만 집중해서 빠르게 만들 것.
ㅤ많은 회사들이 도입하는 것을 추천

- 90% 의 SaaS가 Analytics 도구를 사용하지만, 22%의 회사만 User Recording 도구(HotJar, FullStory 같은)를 사용함

- User 행동에 따라 발송되는 이메일 사용 13%(B2B), 9%(B2C)

* 마찰 없는 (Frictionless) 가입 : 가입율을 높이기 위해 쉬운 프로세스를 구성하고, 쓸모 없는 정보를 묻지 않음. 제품 사용까지 4개 정도의 단계를 거치는지 여부

PDF 링크 : https://drive.google.com/file/d/…

B2B SaaS Onboarding 가이드 https://news.hada.io/topic?id=4104 와 함께 보세요

긱뉴스도 간단하지만 회원가입후 보이는 Welcome 화면이 있습니다.
- https://news.hada.io/welcome ( 회원 가입 및 로그인 된 상태에서만 보입니다. 가입하고 보세요! )

웰컴페이지에선 기본적인 사이트에 대한 소개/사용법 및 트위터/ 페이스북 / Slackbot / Weekly 링크 등을 노출하고,
Google Analytics 의 User Signup 목표 페이지로 활용합니다.

실제로 가입 후에 보여줄 화면이 없더라도, 이렇게 URL을 구성하고 포워딩 하는 형태라도 잠깐 지나갈 수 있게 만들어는 놓아야
GA 나 기타 분석도구들이 회원 가입 이벤트를 처리하는데 유용합니다.

 
MS의 Rust 기초 가이드 [한국어]

- 약 5시간 분량의 러스트 언어 초급 학습 가이드
#1 Rust 시작 : 필요한 도구 설치
#2 기본 개념
#3 오류 처리 방법
#4 메모리 관리 방식 이해
#5 제네릭 형식 및 특성(Traits) 구현하기
#6 모듈, 패키지, 제3자 Crate 탐색
#7 자동화된 테스트 작성
#8 CLI로 To-Do 프로그램 작성하기

- Rust 프로그래밍 언어 [한국어판] https://news.hada.io/topic?id=1152
- Rust - 높은 성능와 신뢰를 확보하기 위한 언어 '러스트의 멋짐을 모르는 당신은 불쌍해요' https://news.hada.io/topic?id=991

- Python을 Rust로 변환하며 Rust배우기 https://news.hada.io/topic?id=2563
- 자바 개발자를 위한 Rust https://news.hada.io/topic?id=2865
- Node 개발자를 위한 Rust 가이드 https://news.hada.io/topic?id=2338

- 30분만에 Rust 배우기 https://news.hada.io/topic?id=1620
- Tour of Rust - 단계별로 배우는 Rust 가이드 https://news.hada.io/topic?id=2439
- Rustlings - 버그 수정하며 Rust 언어 배우기 https://news.hada.io/topic?id=3739
- 위험한 방법으로 Rust 배우기 https://news.hada.io/topic?id=1138
- 소형 마크다운 컴파일러 제작하며 Rust배우기 https://news.hada.io/topic?id=2102

이 First steps with 시리즈는 Go 랑 C#도 있습니다
- Go : https://docs.microsoft.com/ko-kr/learn/paths/go-first-steps/
- C# : https://docs.microsoft.com/ko-kr/learn/paths/csharp-first-steps/

 
프론트엔드 툴킷

프론트엔드 개발자를 위한 간편한 도구들 모음
- SVG to TSX/JSX, CSS
- SVG Optimizer
- Image Optimizer
- Format CSS, JS/TS, JSON
- Colors Converter
- CSS & SVG Symbols
- npm Package Size 확인

- Tiny Helpers - 웹 개발자용 단일목적 간단한 도구들 모음 https://news.hada.io/topic?id=1306
- DevUtil - 개발자용 도구 모음 for macOS https://news.hada.io/topic?id=2959

테스트 및 개발시에 유용한 툴킷 링크도 올립니다.

https://codebeautify.org/

 
퇴사 부검

- 배달의민족 개발자 분이 퇴사하시면서 넷플릭스의 '부검 메일(Postmortem email)' 과 같은 형식으로 남긴 글 및 영상
1. 왜 떠나는지
2. 회사에서 배운 것
3. 회사에서 아쉬운 점
4. 앞으로의 계획
(원래 5번엔 직원을 떠나보내는 넷플릭스의 입장을 적은 메시지가 있지만 여기선 생략 )

 
지속 성장 가능한 소프트웨어를 만들어가는 방법

- 많은 회사와 시스템이 차세대라는 명목의 개발을 수없이 진행
ㅤ→ 이것이 많은 낭비를 일으킨다 생각
- 지속 성장 가능한 소프트웨어를 위해 얘기해볼 핵심 주제 3가지
ㅤ→ #1 비즈니스 로직의 의미와 코드로 어떻게 표현하는지
ㅤ→ #2 소프트웨어의 레이어를 어떻게 관리하고 만들어나가고 있는지
ㅤ→ #3 어떤 관점으로 모듈화를 진행하고 어떤 방식으로 모듈을 확장시켜나가는지

 
Spaceli - 구글 닥스를 Knowledge Base로 사용하기

- 구글 닥스를 개인 또는 팀의 정보 저장소로 활용하게 해주는 무료 도구
- 컨플루언스 처럼 Space를 생성하고, 그 안에 여러 정보들을 트리 구조로 정리하는걸 지원
- 모든 내용은 Google Drive에 저장, Shared Drive에서도 동작
- 통합 검색 가능
- 직접 첨부 가능 서비스 : Google Docs/Sheets/Slides/Forms/Maps, Figma, Youtube, Airtable, Invision, CodePen, Loom, Miro, Whimsical 등
- 외부 서비스를 Embed 하거나 링크 연결도 가능
- 현재 기능들은 무료. 차후에 커스텀 도메인 등은 프리미엄으로 제공 예정

아틀라시안 컨플루언스에 익숙하신 분들은 스페이스 개념이 이해하기 쉬울듯 합니다.
내부에서 구글 닥스 문서는 iFrame 으로 다 불러오니까 마치 Spaceli 가 하나의 위키 서비스처럼 잘 동작하네요.

위키처럼 구글 문서들을 트리 구조로 정리해서 볼 수 있으니 아주 좋네요.
그런데 기존 문서들을 일괄 import 할 수 없고 하나씩 해야하는 점은 아쉽네요.

 
Vale - 글쓰기용 오픈소스 Linter

- 글 작가를 위한 도구
- 코드 린팅과 비슷한 기능을 산문(Prose, 소설/일기 같은 형식 없는 글)에 적용해서 글 작성시 경고/어드바이스 제공
- Syntax Aware : HTML/XML/마크다운 등의 문법을 인식
- 확장 기능으로 다양한 글쓰기 스타일을 적용 가능(MS, Google, write-good, proselint, Joblint)
- 크로스플랫폼 CLI 및 데스크탑용 Server (VS Code, Google Docs 등과 연동 가능)
- 온라인에서 룰 편집 가능한 Vale Studio 제공

- 구글 Word List - 단어 사용 및 대체 단어 가이드 https://news.hada.io/topic?id=4115
- Vale 용 Google Developer Documentation Style Guide 구현체 https://github.com/errata-ai/Google

기본적으로 영문 글쓰기에 적합한 도구이긴 한데, 확장 기능 및 스타일을 통해서 다른 언어 지원도 가능 하다고 합니다.

오픈소스 개발자 분들이 영문 리드미/문서 및 주석 쓸 때 사용하기 좋지 않을까 하네요.

 
7년간의 오픈소스 DB 개발에서 배운 것

- SQLite 기반의 가벼운 분산 데이터베이스인 rqlite 개발자의 회고
ㅤ→ 처음엔 재미 삼아 RAFT로 SQLite를 분산 복제하려는 시도에서 출발
- 가능하면 작게, 기능 하나씩 개발 할 것
- 명확한 중간 산출물 없이 큰 코드 재작성은 피할 것
- 창의성은 불규칙하고 예측할 수 없음
- 코드의 품질을 높인 건 광범위한 테스트 커버리지
ㅤ→ 실제 코드에 최대한 가깝게 테스트 케이스를 작성할 것
ㅤ→ 스모크 테스트에 대한 통합 테스트를 반드시 유지할 것
ㅤ→ 유닛 테스트가 핵심. 유닛 테스트 수준에서 훌륭한 커버리지가 없다면 소프트웨어는 결코 고품질이 될 수 없음
- Go 는 7년 동안 충분히 생산적이었고 계속 즐기고 있음.
- 홍보는 어려움. GitHub에서 8000개의 Star를 얻는데 7년이 걸렸음.
- 프로그래밍은 치유(therapeutic)
ㅤ→ 내 직업은 프로그래머를 관리하는 것(구글의 엔지니어링 매니저)이고, 흥미롭지만 직접 코딩 하는 것과는 다름
ㅤ→ 팀 활동으로서의 프로그래밍은 코딩 스타일, 버그 해결 정책, 코드 리뷰, 기능 우선순위 결정 등의 활동을 필요로 함. 팀 단위의 소프트웨어 구축에는 많은 비코딩 활동이 필요.
ㅤ→ 내 프로젝트에서는 자유로움. 코딩 스타일을 내가 정하고, 기능도 내가 정함. 어떤 버그를 고칠지 내가 결정하고, 미팅에도 갈 필요 없음.
- 7년을 개발했지만 아직도 할 일은 많음
ㅤ→ "it's done" 까지는 절대 가지 못할 것이라고 생각
ㅤ→ 노병들이 그랬던 것처럼, "다만 사라질 뿐" ( "Old soldiers never die, they simply fade away" 에서 )

rqlite - SQLite 기반의 가벼운 분산 데이터베이스 https://news.hada.io/topic?id=3636

 
5년간 PostgreSQL 스케일링 하면서 배운 것

푸시알림 서비스 OneSignal이 75TB 데이터를 40대의 DB서버에서 운영하며 배운 것들
- 데이터 오버뷰 : subscribers, notifications 테이블이 가장 큼

- Bloat : 더 많은 용량을 차지하고, 느려지고, 컴퓨팅 파워를 더 필요로 하게 되는 현상
ㅤ→ Table bloat : VACUUM
ㅤ→ Index bloat : Heap Only Tuple(HOT) optimization
ㅤ→ autovacuum 켜기
ㅤ→ pg_partman 확장으로 테이블 파티셔닝 자동화
ㅤ→ pg_repack 과 pgcompacttable

- Database Upgrades
ㅤ→ pg_upgrdae 는 데이터베이스 오프라인을 필요로 하므로 선택 불가
ㅤ→ 새 버전 PostgreSQL 서버를 따로 셋업하고 pglogical 확장으로 logical replication 사용

- XID Wraparound
ㅤ→ PostgreSQL 의 MVCC(Multi Version Concurrency Control) 기능은 32비트 트랜잭션 ID를 사용하므로 트랜잭션이 많으면 금방 넘어갈수 있음
ㅤ→ 남은 XID 모니터링은 중요
ㅤ→ autovacuum_freeze_max_age

- Replica Promotion
ㅤ→ 빠른 Replica 의 승격을 위해서 haproxy 뒤에 둠

- Partitioning
ㅤ→ 최근 버전 PostgreSQL은 테이블 파티셔닝 기능을 내장
ㅤ→ 파티셔닝이 필요할때 가능하면 다수의 파티션으로 분할하는 것을 추천
ㅤㅤㅤOneSignal 은 16 에서 256, 다시 4096으로 파티셔닝 할 예정

- Sharding
ㅤ→ 내장 지원은 없음
ㅤ→ 원래는 v4 UUID 를 범위에 따라서 구분한 Tenant ID로 샤딩 했음
ㅤ→ 현재는 파티션과 샤드를 인식하는 데이터 프록시를 만드는 중

- PostgreSQL의 결함들 https://news.hada.io/topic?id=1829
- PostgreSQL V12의 잘 안알려진 기능들 https://news.hada.io/topic?id=988
- PostgreSQL DB 공간 절약하기 https://news.hada.io/topic?id=3674

 
DbGate - 오픈소스 크로스플랫폼 (no)SQL DB 클라이언트

- Svelte + Electron
- 윈/리눅스/맥 및 웹브라우저 에서 동작
- MySQL/PostgreSQL/SQL Server/MongoDB 연결
ㅤ→ 동시 다중 연결, SSH 터널 지원
- 그리드 형태의 데이터 브라우저 & 에디터
ㅤ→ FK 마스터/디테일 뷰, FK 룩업
ㅤ→ 원클릭 Group By
ㅤ→ 배치 편집 가능(매크로)
- 쿼리 에디터 & SQL 생성기
ㅤ→ 문법 강조 및 코드 자동완성
ㅤ→ Join 마법사
ㅤ→ 현재 DB에서 SQL 자동 생성 (Create/Drop/Insert/Truncate..)
- CSV/Excel/JSON Export & Import
ㅤ→ 플러그인으로 포맷 확장 가능
ㅤ→ JavaScript 로 스크립팅 지원
ㅤ→ DB간 테이블 복사 지원
- native MongoDB 드라이버 지원
ㅤ→ 컬렉션 데이터, JSON 보기..
ㅤ→ MongoDB API 를 이용한 쿼리 지원
- NPM 형태의 플러그인 아키텍쳐

저는 DBeaver + Mongodb Compass 를 사용하는데요,
DbGate 도 오라클이 안된다는 것을 제외하면 MySQL, PostgreSQL, MongoDB 까지 되니 좋아보이네요.
MongoDB 사용 UX 도 괜찮아 보이고...
일단 여러가지 오픈소스 도구 써본 것 중에 최근에는 DBeaver 가 가장 느낌이 좋았는데, DbGate 도 한 번 써보겠습니다.

mongodb compass 에 비하면 반응 속도가 빨라서 좋고 bastion 서버 설정도 가능해서 편하네요.
다만 인증 디비 지정 옵션이 빠져있는게 살짝 아쉽고
상세 데이터 보기 시에 줄바꿈이 자동으로 안되는게 아쉽네요 (몽고디비만 써봤습니다)

 
Semgrep - 오픈소스 정적 코드 분석 도구

- 런타임 에러,로직 버그,보안 취약점 등의 분석 및 코딩 스탠다드 적용 도구
ㅤ→ 오픈소스 커뮤니티가 만든 1000개 이상의 룰을 이용
- Go, Java, JavaScript, TypeScript, JSON, Python, Ruby 공식 지원
ㅤ→ C, PHP, C#, Kotlin, Lua, R, Rust 등은 알파/실험 단계
- CLI로 로컬에서 실행
- CI 연동 지원(GitHub,CircleCI,Jenkins..)
ㅤ→ 브라우저에서 확인 가능한 Playground 제공

* 페이스북이 2009년에 만들었던 정적 분석 도구인 pfff 를 발전 시킨 것

 
개발자들이 StackOverflow에서 얼마나 Copy & Paste 할까 ?

- 스택오버플로우가 2주동안 사용자들의 Cmd-C 입력을 트래킹
ㅤ→ 2주간 730만개 글에서 4062만번의 복사가 일어남
- 4명중 1명은 방문 후 5분이내에 뭔가를 복사
- 코멘트보다 답변에서 35배 이상 많이 복사
- 놀랍게도 채택된 답변보다, 채택되지 않은 답변에서 더 많은 복사가 일어남 (52.44% > 47.56%)
- 대부분의 복사는 주중 근무시간에 발생
- 아시아 33%, 유럽 30%, 북미 26%
- 복사한 86%의 사용자가 가입하지 않은 익명 사용자(0 Rep, SO의 평판점수)
- 가장 복사가 많이 일어난 Tag들
ㅤ→ html|css > javascript > python > python|pandas > javascript|jquery > python|pandas|dataframe > python|matplotlib > git > php > jquery
- 가장 많이 복사가 일어난 글
ㅤ→ 코드블럭이 있는 답변 : How to iterate over rows in a DataFrame in Pandas
ㅤ→ 평문 답변 : TypeError: this.getOptions is not a function [closed]
ㅤ→ 질문 코드블럭 : How to create an HTML button that acts like a link?

 
Pulumi 3.0 공개

- 설정파일 대신 JS/TS/파이썬/Go 같은 개발 언어로 클라우드 인프라를 관리하는 Infrastructure as Code 오픈소스
- Automation API : 자신의 소프트웨어 안에 API로 Pulumi를 임베드해서 자동화 가능
- 여러개의 언어로 된 컴포넌트(패키지)를 섞어서 사용 가능
- Azure (1.0) 와 Google Cloud (Preview) 프로바이더 추가
- Go / Python SDK 개선
- GitHub Actions, Codefresh, Spinnaker, Okta, Auth0, Splunk 등 다양한 연동 추가

1년전에 2.0 공개되었을 때 긱뉴스에 소개했는데 1년만에 버전업 되었네요.
- Pulumi - Infrastructure as Code https://news.hada.io/topic?id=1894

 
JS로 Content-Aware 이미지 리사이징 하기

- Seam Carving 알고리듬 : 이미지 내의 중요하지 않은 반복되는 부분(Seam)만 찾아서 줄이거나 확장
ㅤ→ 중요 부분 크기는 그대로 두고, 배경만 지우는 방식의 이미지 크기 조절 방법
- 마스크를 이용하여 특정 개체만 지우는데도 사용 가능
- JS IMAGE CARVER 웹앱 을 오픈소스로 공개 (TypeScript로 구현)
- 알고리듬 기본 동작 방식을 설명하고, 구현체 코드를 상세한 주석과 함께 공유한 글

 
ThoughtWorks Radar 24호 발간

테크닉/도구/플랫폼/개발언어 및 프레임워크 분야의 최신 트렌드들을
Hold/Assess/Trial/Adopt 4단계로 시각화 및 설명하는게 특징
[ 이번호 테마 ]
- Platform Teams Drive Speed to Market
ㅤ→ 점점 많은 회사들이 "플랫폼 팀" 컨셉을 도입중
ㅤ→ 내부 플랫폼 을 만들고 지원하는 독립된 그룹을 셋업해서
ㅤㅤ어플리케이션 개발 속도 향상, 운영 복잡성 감소, Time To Market을 개선
ㅤ→ 플랫폼 능력(Capabilities) : 클라우드 네이티브, 지속 배포, 최신 Observablity, AuthZ/N 패턴, 서비스 메쉬등

- Consolidated Convenience over Best in Class
ㅤ→ 개발자 대상 도구들이 동급 최강 제품을 선택하는게 아닌 여러 도구들의 연동으로 구성
ㅤ→ Artifact repositories, source control, CI/CD pipelines, wiki 등
ㅤ→ 물론 Azure DevOps, GitHub 같이 많은걸 포함한 '원스톱 상점'의 매력은 부인할 수 없음
ㅤ→ 이런 통합 툴 스택이 더 편의성을 높이고 이탈을 줄일 수 있지만, 세트로 묶은게 최고의 선택은 아닐 수 있음

- Perennially “Too Complex to Blip”
ㅤ→ 많은 주제들이 몇년째 TCTB 상태 : 너무 복잡해서 눈에 띄지 않음
ㅤ→ 장단점 및 적용 가능성 등 때문에 정확한 의견을 내기 어려운 주제들
ㅤ→ Monorepo, 분산 아키텍처 및 브랜칭 모델에 대한 오케스트레션 가이드 라인 같은..

- Discerning the Context for Architectural Coupling
ㅤ→ 아키텍처 커플링 컨텍스트 파악
ㅤ→ 소프트웨어 아키텍처, 마이크로 서비스, 컴포넌트, API 게이트웨이, 통합 허브, 프론트엔드 등의 적절한 결합 수준이 계속 논의 되지만 정답이 없음
ㅤ→ 이런 결정은 하나의 답 보다는 케이스 바이 케이스로 이루어져야 함

PDF 바로가기 : https://assets.thoughtworks.com/assets/technology-radar-vol-24-en.pdf

- ThoughtWorks가 6개월마다 발행하는 기술뉴스 - Radar Vol.21 https://news.hada.io/topic?id=974
- ThoughtWorks Radar 22호 발간 https://news.hada.io/topic?id=2133
- ThoughtWorks Radar 23호 발간 https://news.hada.io/topic?id=3109

 
BASH Debugger

- gdb 와 비슷한 커맨드 명령을 사용하는 쉘 스크립트 디버거
- bash 스크립트로 구현
- 라인 단위 실행, Breakpoint, Backtrace 지원
- VSCode / JetBrains 플러그인 제공
- zsh/ksh 버전도 있음

- ShellCheck를 만들면서 배운 것들 https://news.hada.io/topic?id=1486
- 안전한 쉘 스크립트 작성하기 https://news.hada.io/topic?id=1434

 
한달 10만원으로 추천시스템 구축하기 [AWS Personalize 도입 후기]

0. 소규모 스타트업에서 추천시스템을 만드는 어려움
1. AWS Personalize 외않써?
2. 데이터 전처리 방법
3. AWS Personalize 자동화 (Python SDK 이용)
4. 가성비 좋게 서빙하는 방법 Batch inference
5. 한계와 Future work