K-devcon에서 주최하는 멘토링 프로그래밍으로 각 분야에서 전문가이신 멘토분들의 멘토링을 통하여 약 2-3달간 진행하는 프로그램입니다.
Go to Learn 1기 같은 경우 Flutter, Back-end, Full-stack, Writing 등 여러가지 주제가 담긴 멘토링 프로그램이 있었습니다.
그 중 Back-end를 중심으로 진행하는 DDIA 프로그램 같은 경우 데이터 중심 애플리케이션 설계라는 책을 매주 1장 씩 정독하고 요약하면서 괸련된 이야기를 논의하면서 진행하고 있습니다.
K-devcon 이란? : IT 정보를 공유하거나 위에서 설명한 Go to Learn 스터디 및 밋업을 개최하는 활동을 하고있는 IT 커뮤니티입니다.
K-devcon 홈페이지 바로가기
1장을 읽어보면서 간단히 요약해보면 어플리케이션 개발 방식이 데이터 중심으로 설계 및 개발해나간다는 점을 설명해준 다음, 그 이후 위의 설계 방식에서 요하는 세가지를 소개하면서 각 요소들을 설명해주는 방식이었다.
데이터 중심으로 설계하는 방식을 위 장을 읽음으로써 처음 알았음에도 해당 방식을 설명해주는 용어가 익숙한 느낌을 받았었다. 또한 어플리케이션 개발을 진행하면서 데이터 중심으로 설계되었다는 느낌이 받지 못했었던 것 같았다. 해당 장에 따르면 시스템 추상화가 잘 되어있었기 때문에 위 두가지 현상이 나타날 수 있었다는 내용이 들어있었다.
데이터 중심 설계가 등장하게 된 계기 중 하나인 어플리케이션 요구사항이 점차 다양화 및 세분화 되어진다는 사실은 업무를 수행하면서 이러한 사항을 잘 알고 있었기 때문에 이러한 설계가 왜 도입이 되었는지 쉽게 이해 할 수 있었다.
아래의 내용들은 각 요소들을 읽으면서 떠오른 것들을 서술한 내용이다.
신뢰성 : 신뢰성을 높이기 위한 방법 중 일부러 결함을 발생시켜 애플리케이션 내 안정성을 높이는 방법이 가장 먼저 기억에 남았다. 위의 방법을 서술하자면 결함을 완전히 해결하는 방식보다 오히려 이러한 결함을 이용하여 애플리케이션 내 신뢰성을 높히는 방법이다.
확장성 : 확장성에 영향이 끼치는 여러 매개변수를 설명하기 전 유명한 플랫폼을 예시로 들어서 어떠한 방식으로 확장성을 개선할 수 있는 방법이 순서대로 여러차례 설명한 내용이 담겨있어서 이해하기 쉬웠었다.
유지보수성 : 시스템 설계 원칙의 원칙들을 보면서 프로젝트 내 팀원들이 작성한 코드를 쉽게 알아볼 수 있기 위하여 리펙토링 서적 및 아티클을 읽었던 활동이 생각 났었다. 이러한 활동 덕분에 위의 두가지 요소 보다 상대적으로 더 유심히 읽었었던 내용이었다.
최근 위 책을 읽으면서 위의 내용 처럼 정리한 내용들을 논의해보는 스터디를 시작하였다.
필자 같은 경우 1장 초반에 나타내어있는 그림에서 어떠한 도구들이 데이터 중심 애플리케이션을 설계할 때 사용되는지를 주제로 질문을 드렸는데 인터페이스 추상을 이용하여 설계할 수 있다는 점을 다른 책(클린코드)를 인용하면서 답변을 받았었다.
또한 다른 분이 서술한 이야기를 들어보면서 나랑 비슷한 경험을 한 분도 있는 한편 다른 관점에서 설계 및 문제 해결을 수행한 이야기 등을 들을 수 있었던 시간이었다.