miraee05
144
2020-02-20 08:43:36
2
4297

서버에 CI/CD를 설정하면서 느꼈던 단상...


원래는 일기식으로 작성한 건데 부끄럽지만 조금 공유해봅니다.

주제넘게 말하는 것일 수도 있어서 제 배경을 먼저 밝힙니다.

개발자로서 일한지는 이제 2년정도 되어가고 있고, 프로그래밍 공부를 시작한 지는 3년 정도 되었습니다.

개인적인 제 생각을 나열한 것인데 도움은 못되더라도 생각할 거리를 드렸으면 좋겠습니다.



서버에 CI/CD를 설정하면서 느꼈던 단상...


어떤 회사에 질문 리스트 중에 주소창에 엔터를 치면 벌어지는 일이 리스트에 있었던 것을 봤다. 그 당시에는 크게 의미있게 느껴지지 않는 질문이였지만, 시간이 지나서 내가 CI/CD를 설정하고 디버그하는 과정에서 개인적으로 네트워크에 대한 지식이 이론적으로든, 경험적으로든 있지 않으면 참 디버그 하기 힘들었겠다는 생각이 들었다.

이러한 지식이 없으면 디버그하는 과정에서 우연적으로 추론하고, 우연적으로 설정을 고쳐 나가게 될 확률이 높아지는 것 같다.

또 디버그를 하려면 문제나 프로세스를 가장 작은 단위로 만들어서 독립된 환경에서 재현을 해보고 스스로가 문제의 원인이라고 생각하는 것을 완전히 통제하면서 가설을 검증하는 절차를 거쳐야 하는데, 이 작은 단위의 환경을 만드는 생각 자체가 해당 도메인(여기서는 네트워크)에 대한 지식이 없으면 불가능 한 것이다.

설정 디버그는 까다롭다. 다만 환경을 아주 작게 만들면, 그렇게 까다롭지도 않다. Stack Overflow의 MCVE(Minimal, Complete, and Verifiable examples)이 연관 되기도 한다. 물론 이 MCVE는 상대방에 대한 배려이지만, 환경을 작게 만드는 행위는 자기 자신을 배려하기 위함이다.


그렇다면 이론적 지식과 경험적 지식은 어디가 먼저 선행 되어야 할까? 정답은 없겠지만 개인적으로는 경험-지식-경험 이 세개의 패턴이 제일 확실한것 같으며, 두번의 패턴으로 끝낼 수는 없다고 생각한다. 완전히 새로운 분야에서는 제일 선두에 익숙해지기 가 먼저 나와야 하며 그냥 하고 싶은대로 마음대로 하는 것이다. 이것도 눌러보고 저것도 눌러보고, 인터페이스에도 익숙해지고, 그리고 어려운 문제 일수록 경험-지식-경험-지식-경험 을 무수히 반복해야 자신의 것이 되는 것 같다.

이번에 클라우드에 서버를 본격적으로 구축하면서, 뭔 설정들이 그렇게 많은지라고 잠시나마 불평했던 적이 있다. 하지만 곧바로 이런 생각이 들었다. 만약 내가 물리적으로 직접 구축하고 바꾸려고 했으면 이렇게 쉽게 내 가설을 테스트 해 볼 수 있었을까? 이렇게 쉽게 인프라에 변경사항을 저장할 수 있었을까?

무엇보다도 배우기 좋은 세상이 되었다. 무엇보다 개발자들이 할 수 있는 것이 많아진 시대가 되었다. 구현 코드들은 단순히 서비스를 넘어서, 물리 세계의 행동 까지도 바꿀 수 있으며, 그 행동을 관찰하고 자신의 것으로 습득할 수 있는 특권이 개발자들에게 주어지게 되었다.


이제 말을 맺으려고 한다.

나는 여전히 컴퓨터 계층에 묶여 있어, 때로는 작은 실수 하나로 몇 시간을 보내기도 한다. 반면에 어떨 때는 작은 성취 하나로 큰 영향력을 가져오기도 한다. 그러니 작게 실행하고 크게 생각하자.






7
3
  • 댓글 2

  • 하늬바람
    499
    2020-02-21 09:25:23

    공감이 가는 좋은 경험이네요.

    0
  • miraee05
    144
    2020-02-22 13:21:45

    공감해주셔서 감사합니다~

    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.