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

복잡한 시스템을 익힐 때 아무리 서류를 여러 번 읽어보고 연구해 봐도 이해하는 데 시간이 꽤 걸릴 수도 있어요. 주니어시절 아키텍처를 이해하는 데 어려움을 많이 겪었던 것 같아요. 아키텍처를 이해하는 데 도움 되었던 방법 몇 가지 적어 봅니다. 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,273

댓글 2

함께 읽은 게시물

여러분 PostgreSQL 프로시저는 Python, JavaScript은 물론 Perl, Java, Lua 등도 사용할 수 있답니다~* 대부분 구식🤭 MySQL만 쓰셔서 모르시겠지만.. (도망간다)


이직의 조건



... 더 보기

파이썬으로 만든 매우 작은 검색엔진 microsearch

h

... 더 보기

GitHub - alexmolas/microsearch

GitHub

GitHub - alexmolas/microsearch

간만에 개발 떡밥이(신난다) 이번엔 제가 소수 입장에 있는 ORM이군요. 후후..


저는 몇몇 사건을 통해 ORM 반대주의자가 된 사람인데요.


... 더 보기


< 💡 Spring Rest Docs 로 Swagger API 문서 관리 자동화 > 💬 Spring Rest Docs 란? Spring REST Docs 는 RESTful 서비스의 문서화를 도와주는 도구이다. 문서 작성 도구로 Asciidoctor 를 기본적으로 사용하며, 이것을 통해 HTML 문서를 생성한다. 필요한 경우 Markdown 문법을 사용하도록 변경할 수 있다. RESTful API를 문서화 할때 중요한 포인트는 API 에서 필요한 HTTP 요청과 응답의 리소스를 설명하는 것인데 Spring REST Docs 를 사용할 경우 테스트 코드를 작성하여 이러한 리소스와 HTTP 요청/응답에 대한 세부 내용을 문서화하는데 편리한 기능을 제공한다. 💬 Swagger 란? RESTful API 를 약속된 규칙에 따라 json 이나 yaml 형식으로 문서화한 Open API Specification(OAS) 라는게 있는데 이 문서를 관리하기위한 목적으로 만들어진 프레임워크다. API 문서 자동화 도구로 Spring REST Docs 의 비교군으로 자주 등장하는데 Spring 을 사용할 경우 서비스 코드에 어노테이션... 더 보기

[NHN FORWARD 2020] MSA 환경에서 API 문서 관리하기: 생성부터 배포까지

www.youtube.com

[NHN FORWARD 2020] MSA 환경에서 API 문서 관리하기: 생성부터 배포까지