복잡한 시스템 빨리 이해하는 법

복잡한 시스템을 익힐 때 아무리 서류를 여러 번 읽어보고 연구해 봐도 이해하는 데 시간이 꽤 걸릴 수도 있어요. 주니어시절 아키텍처를 이해하는 데 어려움을 많이 겪었던 것 같아요. 아키텍처를 이해하는 데 도움 되었던 방법 몇 가지 적어 봅니다. 1️⃣ 서류를 읽어보며 상위 설계 대충 이해해 보기 시스템 설계를 설명하는 서류나 학습 자료가 있다면 한 번 훑어보면서 대충 상위 레벨 아키텍처를 스스로 이해해 보려고 노력한다. 자료를 읽는다고 바로 이해되는 건 아니지만, 대충 큰 그림을 이해하고 코드를 읽어 보면 아키텍처를 이해하는 데 큰 도움이 된다. 서류가 없는 경우, 이 단계를 스킵하고 다음 단계부터 시작하면 된다. 2️⃣ 코드 읽어 보면서 시스템 설계 다이어그램 직접 그려 보기 스케일이 큰 시스템의 코드베이스는 굉장히 복잡하고 하나하나 꼼꼼하게 읽어 보면서 그릴 수 없다. 그렇지만 최대한 중요한 코드를 파악하고 컴포넌트가 어떤 역할을 하고 컴포넌트 간 어떤 상호 작용을 하는지 다이어그램을 그려 보며 스스로 설계해 본다. 다이어그램이 완벽하지 않아도 된다. 요점은 스스로 코드를 파해쳐 보며 설계해 보는 게 자료만 읽는 것보다 아키텍처를 이해하는 데 더 도움 된다. 이 방법은 마치 알고리즘 문제 풀기와 비슷하다. 기본적으로 알고리즘 개념을 책을 읽거나 유투브 강의를 보며 익힌 다음 직접 문제를 풀어 보면서 연습해야 '내 것'으로 만들 수 있다. 아키텍처도 비슷한 방식으로 접근하는데, 설계 경험 충분하지 않다면 실무에서 아키텍처를 익히려면 직접 그려보고 설계해 보는 게 가장 중요하다. 또한 이런식으로 아키텍처 다이어그램을 직접 그리면 설계 서류를 작성하고 설계 면접을 준비하는 데 도움 된다. 3️⃣ 선임에게 다이어그램 보여 주며 설명해 보기 스스로 그려 본 다이어그램을 관련 아키텍처를 잘 아는 선임에게 보여 주며 스스로 익힌 점을 설명해 보자. 틀려도 괜찮다. 요점은 시스템을 잘 아는 선임에게 내가 이해한 시스템을 설명하고 선임이 틀린 점을 바로 알려주면서 내가 모르는 점을 알게 되고 틀린 점을 바로 고칠 수 있다. 예를 들어, 주니어 시절 선임이 '학습 세션(learning session)'을 통해 다이어어그램을 그리며 신입사원에게 아키텍처를 설명해 줬는데, 세션이 끝나도 그 시스템을 이해하지 못했다. 물론 어느 정도 상위 수준의 아키텍처를 이해할 수 있었지만, 정보를 흡수만 하는 게 시스템을 익히는 데 큰 도움이 되지 않았다. 어렵더라도 내가 스스로 익혀보고 설계를 해보면서 선임에게 반대로 알려 주면서 상호적인 학습 세션을 통해 배우면 개념을 훨씬 빠르고 깊게 익힐 수 있었던 것 같다. 4️⃣ 팀원에게 다이어그램 그리며 시스템 설명해 보기 '가르치면서 배운다'는 걸 느낀 적이 있는데, 아키텍처를 가르쳐 주면서 팀원들이 모르는 점을 물어본다. 모든 질문에 대답할 수도 있고 없을 수도 있지만, 없어도 괜찮다. 내가 알지 못한 점을 다른 사람의 질문을 통해 알 수 있고, 스스로 공부했을 때 그냥 지나쳤을 수도 있는 아키텍처의 디테일한 점을 익힐 수 있다. 종종 생각지도 못한 질문을 받고 그 질문에 관한 답변을 찾으면서 스스로 공부했을 때 보다 더 많은 양의 정보를 흡수할 수 있다. 5️⃣ 상호작용하는 학습 세션 만들기 스텝3과 스텝4를 할 수 없는 상황이라면 팀원끼리 모여 함께 다이어그램을 그리며 설계를 설명해 보는 건 어떨까? 같이 배우면 혼자 배우는 것보다 더 많은 양의 정보를 흡수할 수 있다. 🪴 함께 읽으면 좋은 글 라지 스케일 시스템을 구현하는 개발자가 아는 것 https://careerly.co.kr/comments/90638 개발자가 꼭 봐야 할 책 - 데이터 중심 애플리케이션 설계 https://careerly.co.kr/comments/67004 초당 1억 건의 요청 S3 스케일의 스토리지 구축, 운영, 관리 https://careerly.co.kr/comments/88808

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 9월 16일 오후 7:20

 • 

저장 332조회 12,299

댓글 2

함께 읽은 게시물


나는 종종 생산성을 올리기 위한 각종 개발 툴은 물론, 라이브러리나 소스 코드를 구매하기도 한다.


소스 코드의 경우 실제로 써먹지 못하는 경우도 상당수 되긴 하지만, 그래도 구성이나 코드를 보면서 배우는게 있기 때문에 학습 비용이라고 생각하고 가끔 구매하는 편이다.


... 더 보기

사람들이 요즘 AI, ChatGPT에게 의존하여 사고력이 저하되고 있다는 이야기가 많이 나온다.


두뇌 발달에 안 좋으니, 80년대에 계산기 쓰지마라, 90년대에 컴퓨터 쓰지마라, 2000년대에 엑셀 팡션 쓰지마라, 2010년에 스마트폰 쓰지마라는 말과 같다는 생각이다.


... 더 보기

 • 

저장 7 • 조회 2,533


알아 알아 알아! 🤣

... 더 보기

괜찮아 괜찮아 괜찮아!



... 더 보기

혹시 Claude 나 cursor 등 AI 로 개발하실 때
뭔가 AI 스러운 뻔한 디자인 때문에

... 더 보기

LinkedIn

www.linkedin.com

LinkedIn