brunch

You can make anything
by writing

C.S.Lewis

by 백명석 Mar 04. 2018

독립적인 배포/개발에 대해서

어느 주니어 개발자분의 질문

모처럼 Clean Code 강의(https://www.youtube.com/user/codetemplate/videos) 자료에 대한 공유할 만한 질문이 있어서 질문과 답변을 정리해 본다.


질문

https://www.youtube.com/watch?v=IIrjI7YUw6g&index=18&list=PLuLb6MC4SOvXCRePHrb4e-EYadjZ9KHyH 에서 

  


위와 같이 구성을 하면 독립적인 배포/개발 불가라고 하셨는데요!! 그런데 어차피 인터페이스를 두고 컴파일에 성공해서 의존성은 분리된다라고 해도 애플리케이션 자체를 다시 배포해야 되는 게 아닌가 해서요! 인터페이스를 둔다고 해서 어떻게 독립된 배포가 가능하다고 하는 시지 이해가 잘 안 되어서 이렇게 메일 드립니다!!!

답변

요즘은 배포를 java의 경우 war, jar 등으로 한두 개의 클래스가 변경되어도 다시 모든 파일을 배포합니다. 이게 훨씬 안전하고 편리하니까요. 이런 환경에서는 독립적인 배포가 불필요합니다.

이건 빌드에 배포가 시간이 얼마 소요되지 않아서 가능하게 된 것이라고 생각합니다.

99년에 EJB 시절에는 System.out.println 하나 추가하고 build, deploy, restart 하는데 10분씩 걸렸었습니다. 이럴 때는 일부 변경된 파일만 빌드, 배포하는 게 의미가 있었죠.

특히 java가 아니라 c, c++ 등에서는 빌드 시간이 엄청 길었기 때문에 이런 원칙이 더 큰 의미를 지녔습니다. 

VisualC++를 사용할 때 pch(pre-compiled header)라고 해서 자주 사용되는 header를 미리 .obj로 컴파일해서 컴파일 속도를 높이기까지 했었습니다. 독립적인 배포는 c, c++ 시절에 더 큰 의미를 지니고 그때부터 사용된 개념으로 이해하시면 좋을 것 같습니다.


따라서 지금은 독립적 배포 그 자체는 큰 의미가 없습니다.
하지만 독립적 배포는 독립적 개발을 의미한다는 점에서
현재도 큰 의미를 갖습니다.


독립적 개발이 의미하는 것은 내가 어떤 Service를 구현 중일 때 Service가 의존성을 갖는 Repository, DAO, 다른 Service 등이 구현되지 않았더라도 Mocking 등을 하면서 Interface만 정의되었다면 개발을 진행할 수 있다는 것을 의미합니다. 즉 여러 개발자들이 같이 개발할 때 다른 개발자 때문에 대기하지 않아도 된다는 것을 의미합니다. 또한 이런 방식이 가능하기에 Interface를 provider(공급자, 작성자)가 아니라 consumer(사용자) 입장에서 정의할 수 있어서 lean 한(꼭 필요한 기능만 개발하는) 개발이 가능해집니다. 또 TDD를 통해서 Interface를 iterative 하게 discover 해 나가면서 개발하는 것이 가능해 지고요.

의견

본인을 스타트업에서 일하는 주니어 개발자라고 소개하신 분의 질문은 예리했다고 생각한다. 그리고 이렇게 메일로 문의하신 그분에게 감사드린다. 회사에서도 그렇고 많은 분들이 의문이 있으심에도 질문을 꺼려하시는 것을 본다. Daum에서는 덜 그랬던 것 같은데, 지금 회사에서는 아무래도 직급/직책이 있어서 불편해서 일 것이라 추측해 본다. ㅠㅠ

나는 궁금한 것이 있을 때 twitter, 혹은 공개된 mail 주소를 통해 질문을 한다(예. Kent Beck, Robert C. Martin 등). 대개의 경우 매우 정성 있는 답변을 받는다. 물론 나도 나의 질문을 잘 정리해서 보냈다. 세계적 대가들도 한국의 이름 모를 개발자의 질문에 성실히 답변을 주신다. 그러나 나 정도야 누가 물어보시면 정말 바쁠 때를 제외하고는 당연히 열심히 알려드리고 싶다. 이렇게 알려드리는 것이 그분들의 문제를 해결하거나 발전하시는데 조금이라도 기여를 한다면 매우 기쁜 일이다. 또 이런 활동이 나를 발전도 시킨다. ^^

일요일 오전 의미 있는 시간을 갖게 해 주신 그분(질문 주신)께 감사드린다.

작가의 이전글 Adrian Cockcroft와 함께한 1시간의 Q&A
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari