본문 바로가기
개발자의 인생

생활 속 모듈화와 분리가 개발자에게 중요한 이유

by 진기씨 2024. 9. 15.

 

한국에서의 개발 경험을 갖고 처음 북유럽에서 일 할 때 가장 어려웠던 점은 개념의 모듈화에 대한 것이었다.

 

보다 정확히는 객체지향 프로그래밍의 SOLID 원칙의 첫 번째인 단일 책임 원칙(Single Responsibility Principle, SRP)을 의미한다.

 

SRP는 한 클래스(혹은 모듈)는 하나의 기능만을 담당해야 한다는 개념이다.

 

다양한 재료를 섞어 조화로운 맛을 만드는 비빔밥의 나라답게 한국은 고수준의 개념 설계를 할 때 여러 기능들을 섞곤 한다.

 

이 섞임을 가장 잘 관찰할 수 있는 부분이 나에게는 인터페이스 구현이었다.

 

개발자 및 사용자 편의성을 고려하여 하나의 인터페이스를 이용해서 다양한 것들을 다룰 수 있도록 하는 것이었다.

 

(대표적인 예가 채팅, 송금, 쇼핑 등을 한 큐에 제공해주는 카카오톡 - 여기 직장 동료들이 종종 놀리곤 한다.)

 

 

한국에서의 사용자 편의성은 그 어떤 요구사항보다 중요하게 여겨진다.

 

하지만 그 편의성을 고려했을 때 시스템 안정성, 확장성, 유지보수가 엄청 까다로워지게 된다.

 

그런 것을 잘 체감하지 못했던 이직 초반에는 사용자 편의성을 위한 통합을 해야하니 말아야 하니 이런 걸로 이 곳 개발자들이랑 많이 다퉜던 기억이 난다. (그리고 내가 졌다.)

 

 

SRP 개념에 적응을 한 후, 여러 종류의 데이터를 다루는 데이터 서버 구축 건을 어떤 한국 팀과 진행한 적이 있다. 

 

데이터 종류 별로 서버를 별도로 구축하는 것이 나의 기준엔 옳았으나 한국 팀의 생각이 달라 설득을 시도했으나 실패한 뼈아픈 경험이 있다.

 

데이터마다 특성 (데이터 크기, 획득 빈도, 처리 빈도, 종류 등)이 달랐기 때문에 크기가 큰 종류의 데이터로 인해 다른 데이터의 입출력에 영향을 줄 확률이 높았었다.

 

만에 하나 그 데이터로 인해 서버가 죽는다면 전체 시스템이 죽는 참사가 일어난다.

 

다행히 나는 극초반 이후 참여하지 않게 되었지만 이 후의 개발 로드가 어떻게 되었을지 궁금하다.

 

 

SRP의 본질은 하나의 모듈은 하나의 기능을 한다는 것과 그 기능을 위해 다른 모듈(또는 개념)과 분리시키는 것이다.

 

이 개념은 굳이 프로그래머가 아니라도 일상생활 속에서 충분히 실행할 수 있다.

 

한 사람에게 이메일을 여러 개 보낼 일이 있을 때, 한 주제당 하나 씩의 이메일을 보내는 것.

 

왼쪽 주머니에는 신용카드만, 오른쪽 주머니에는 핸드폰만 넣는 것.

 

주방에서 조리 도구는 조리 도구 칸에, 식기류는 식기류 칸에 보관하는 것.

 

출근용 가방에는 회사에서 사용할 도구들(예: 충전 케이블)만 넣어 놓고 일상 생활 도구들과는 분리하는 것.

 

이런 가벼운 분리를 잘 하는 습관만 들여도 문제 발생이 적어지고 뭔가를 찾는게 빨라지는 효과가 있을 것이다.

 

이런 습관들을 통해 본업도 협업도 잘 하는 전문가로 한 발자국 내딛을 수 있다!

 

 

현실은 훨씬 복잡하기 때문에 분리와 모듈화가 모든 일에 쉽게 적용되지 않는다.

 

하지만 이런 작은 습관들이 프로그래머로써 가져야 하는 좋은 자질을 만들어낸다.

 

여기에 더불어 한 모듈이 그 기능만 잘 기능할 수 있도록 다른 요구사항으로부터 보호하는 뚝심도 기를 수 있기를 바란다.

 

 

글을 쓰고 다시 읽어보니 회사가 직원들에게 원하는 요구사항도 나라별로 비슷한 것 같다.

 

한국: 모든 것을 다 처리해주는 만능 해결사

덴마크: 한 가지를 전문적으로 수행해주는 전문가 (그 외에는 하나도 모름. 시스템이 뒷받침해줌.)