[TIL] 2019-12-02 ~ 08 회고

undefcat·2019년 12월 8일
0

TIL

목록 보기
91/228

하루 1커밋 운동

최근에 유튜브에서 배달의 민족 이동욱 개발자님의 영상을 본 적이 있다. 그 어느 영상보다도 매우 인상깊게 봤는데, 아마도 나와 비슷한 출발점을 갖고 계셔서 그런가 더 자극이 되었다(나 역시 지방대/비전공 개발자...).

언제나 그렇듯, 꾸준함이 정답이라는 것이다. 영상에서 하루키 얘기를 해주셨는데, 무슨 일이 있던지 할 수 있는 나만의 할당량을 만들어야겠다는 생각을 했다. 이동욱 개발자님은 아침에 2시간, 주말엔 풀타임으로 매일 공부를 하신다고 한다. 난 지금 아침에 1시간 정도 할애하고 있는데, 조만간 이 시간을 2시간으로 늘려야겠다는 생각을 했다.

또, 매일 1커밋을 지금껏 3년 동안 계속 하셨다고 했다. 나도 첫번째 목표를 잡았으니, 진행할 계획이다.

어차피 인생 길게 가야하는데, 조급할 필요 없다. 그냥 꾸준히 하자.

CMS 만들기

이번 일주일은 거의 Go로 CMS를 구현하는 연습을 했는데, 비록 완성은 못했지만 느낀점을 적어본다.

1. 마법의 PHP

동적타입언어가 얼마나 편리했는지를 느낄 수 있었다. 특히 PHP의 경우 동적으로 파일을 마음껏 가져올 수 있으며, 동적으로 메서드를 마음껏 호출할 수 있지만 Go는 그렇게 하기가 매우 까다롭다.

2. KISS 원칙

직관적인게 좋다. DDD는 정말 거대한 어플리케이션을 만들 때, 또는 DDD에 익숙한 개발자들이 많을 때 사용하기 좋을 것 같다는 결론을 얻었다. 아직 나조차도 D린이에 불과하기 때문에, 섣불리 적용하려고 하다간 큰일날 것 같다는 생각이 들었다. 회사일은 언제나 현실적인 문제를 고려해야 한다. DDD는 좀 더 정진하고 성숙했을 때, 회사일로 도전해야겠다.

DDD얘기를 갑자기 왜 꺼냈냐면, 현재 팀장님께서 만드신 CMS 구조는 도메인영역이 Presentation, Application 영역과 결합되어 있다. 근데 아무리 생각해도 이게 현재로써는 최선의 방법이라는 것을 깨달았기 때문이다.

현재 프로젝트 구조는 아래와 같다.

modules/
	moduleA/
    	controllers/
        views/
        ...

여기서 module들이 우리가 해결하려는 각각의 도메인 영역이 된다.

이 구조의 장점은 첫째로 매우 직관적이다. 이게 모듈로 나눠져 있다는 것만 알면, 프로젝트 구조의 절반은 이해한 것과 다름 없다. 나머지는 어떻게 이 모듈을 이용하는지 그 방식을 알기만 하면 된다.

둘째로 생각외로 중복이 거의 없다. 이는 우리가 해결하려는 문제영역이 그만큼 복잡한 수준은 아니라는 뜻이다. 그리고 이런식으로 controller에 도메인 로직을 넣는 것은 매우 자연스럽고 자주 사용되는 패턴이다. 앤터프라이즈 애플리케이션 아키텍처 패턴에서는 이러한 패턴을 트랜잭션 스크립트 패턴이라고 표현했다.

굳이 복잡하게 할 필요가 없다. 간단하게 할 수 있으면 간단하게 하는 것이 맞다.

하지만 공부를 하는 입장에서 그래도 일부로 복잡하게 DDD로 구현을 해봐야겠다는 생각을 해본다. 어쨌든 공부는 어렵게 해야되는게 맞다고 생각한다.

다음주?

다음주 화요일부터 본격적으로 일이 시작된다. 하지만 일하는 시간과는 별개로 나의 자기 계발 시간을 무조건 갖자!

profile
undefined cat

0개의 댓글