Grokking 기본에서는 템플렛을 챙깁니다. 서비스를 어떻게 Define 을 하고 핵심 Components 는 뭐가 필요하고 Scale up and out 을 할려면 뭘해야 하는 흐름으로 가면 됩니다.
그리고 Grokking Advanced System design 를 보면서 클래식한 시스템 위주로 Reliable, Scalable, and Maintainable 한 서비스를 만들려면 어떻게 해야 하는가를 예상 질문들과 답을 쭉 만들어 놓으면 좋을꺼 같습니다.
서버 혹은 데이터베이스가 망가지면 어떻게 할 것인가 (gossip protocol, split brain), 어떻게 리버커를 할 것인가 (hinted handoff), 대량의 데이터를 어떻게 처리 할것인가 (map reduce), 데이터를 어떻게 효율적으로 쓰고 있을 것인가 (commit log, bloom filters, and cache), read/write 을 하는데 network 에 딜레이가 생기면 어떻하나
제 개인적 경험으론, grokking에 비해서 굉장히 제너럴한 타픽을 주기때문에, 빠르게 시스템 정의를 하는 연습이 필요합니다, 그래야 시간이 안부족합니다.
예를들어, 아마존 에코 뉴스 프로덕트 디자인 해봐라.
저 같은 경우는 이걸 bitly처럼 접근했다가 너무 크게 접근해서 시간 부족으로 망쳤습니다. 따라서 코딩문제도 마찬가지지만, 초반 5분은 문제 정의하는데 투자하세요.