수업 중에 나온 한 학생의 질문이다. 다른 개발자들은 어떻게 생각하는지 의견 주면 이 친구가 더 깊이 있는 고민을 하는데 많은 도움이 되겠다.
웹 UI수업을 하며 편안하다고 느꼈던 점은, 별다른 계층 구조 없이 HTML CSS JS만 가지고 메모장에서 기능이 약간만 추가된 에디터를 가지고 코딩할 수 있다는 점이었습니다. (심지어 한 파일에서 그 세개를 다 하기도..)
그런데 서버는 내가 서버 개발자인지 서버 세팅 기술자인지 막상 로직으로 들어가면 (누구나 그렇겠지만) 정말 쉽게 잘 할 수 있는것 같은데 컨테이너나 외부 라이브러리 설정, 서버 세팅 및 배포, IDE 사용방법 등이 자꾸만 어렵게 느껴집니다. 이 부분에서 즐거움을 느낄 수 없다보니 조금 늘어지는 느낌도 있습니다. 서버 개발자의 숙명인거겠죠?
컨테이너나 톰캣 없이 순수 자바로 루프돌면서 포트 리슨을 해서 헤더파일 분석하고 데이터 송수신 하는 간단한 서버를 한번 짜보는게 도움이 될까요?
1개의 의견 from FB
3개의 의견 from SLiPP
저도 저 학생분과 약간 비슷한 생각을 가지고 있었습니다. 왜 굳이 복잡한 설정을 해야 할까? 하는 생각을 자주 했기때문에, 한 때는 윈도우를 찬양했었습니다. 특히 윈도우진영(C#/.NET)에서는 개발환경세팅에 큰 힘들이지 않고 개발에만 집중할 수 있는점이 가장 큰 장점이라고 생각합니다. 특히 java/spring은 처음에 접하기엔 너무 많은 모든것을 제공하기 때문에, 특히 무엇을 어떤 상황에서 적절히 써야 한다는 것이 가장 힘든 점이었던 것 같습니다.
지금 와서는 서로의 장단점이 있다고 생각하지만, 어려운 세팅이 서버개발자로 진입의 어려움에 한몫하고 있다고 생각합니다. 가장 쉽게 서버 개발가능한 node.js나 python, ruby등으로 먼저 서버역할에 대해서 이해하고 그 후에 java를 해도 늦지 않다고 생각합니다.
제 생각에는 한번 짜보는게 훨씬 도움이 많이 될거라고 생각합니다.
어차피 IDE를 셋팅하고 라이브러리를 설정하고, 서버 세팅하고 배포하는 것들은 한번 고생해서 구현을 해보면 그 이유를 알기때문에 이런게 설정이되어야 하지 않을까라는 생각이 자연스럽게 들게되죠. 또한 IDE를 사용하지않고 구현을 한다면 오타부터 시작해서 설정파일 XML 에서 틀린부분들도 체크를 해야하고, JNDI를 활용한다면 명칭이 정확한지 인코딩이 정확한지등도 살펴봐야하기때문에 결국에는 IDE를 왜 사용하는지도 이해가 될것 같습니다.
셋팅이 어려운 이유는 내가 만들어놓지 않은 프로그램이 돌아가도록 설정하는 것에 대한 어려움이 아닌가 생각합니다. 톰캣이 동작하는 전반적인 플로우를 이해하고, 그것을 그림으로 그리고 간단하게라도 구현을 해본다면 이해하는데 확실히 도움이된다고 생각합니다. 어차피 톰캣이나 WAS같은 프로그램들도 이런 컨테이너가 없을때 만들었던 '자바로 루프돌면서 포트 리슨을 해서 헤더파일 분석하고 데이터 송수신 하는 간단한 서버'에서 시작했을테니까요.
마치 밥을 지을때 쌀을씻고, 물을 맞추고, 불조절을 해야 밥이되는데 그런 과정들을 계속할려면 밥을 짓는사람의 실력이 매우중요하죠. 하지만 항상 실력좋은 사람이 있을수도 없고, 아침같은 경우에는 밥을 빨리먹기도 해야하니, 좀더 편리한 밥솥이나 햇반을 이용하게 되는것죠. 밥이 어떻게 만들어지는지를 이해하고 사용하는 것과 그냥 전자레인지에 돌려서 되는 것으로 밥을먹다보면 햇반이 없으면 밥을 못먹게 될수도 있으니까요. 과정을 이해하고 지속적으로 반복되는 부분은 이미 구현된 것들을 활용하면 좀 더 많은 것을 할 수 있다는 걸 알고 어떻게 구현을 할지는 스스로가 판단하는게 더 좋을거란 생각도듭니다.
작년에 nodejs 로 webserver 구현 맛보기했던 스터디가 생각나네요.
사람마다 다를 수 있겠지만, 프로그래밍하고 있는 순간이 재미없는 순간은 이게 왜 필요한지 잊은채 로직을 구현할 때 인듯 합니다.
간단한 웹서버를 직접 구현하고난 후에 거기서 느꼈던 반복적인 작업들, 필요한 로직들을 이해하게 되면. 자연스럽게 고민하고 있는 많은 것들이 해소될듯 합니다.
아니면 http완벽가이드 라던가 웹을 지탱해주는 기술 같은 책을 미리 읽어보는 것도 큰 도움이 되지 싶네요. 그리고 IDE의 이해는 다른 프로그래밍을 하면서도 찾게 될 것 같구요, 배포는 ... 실무에서 경험해도 전혀 늦지 않을 듯 싶은데. 왜 학습 차원에서 배포를 경험하는지 잘 모르겠네요.
단순 구현결과를 보기 위해 서버에 배포하는게 아니라 프로젝트 관리 측면에서 저런 고민을 하고 있는듯 해서 붙인 말입니다. ㅎㅎ
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.