CS-HOME는 왜 이렇게 됐을까? #5
gabrielyoon7
started this conversation in
3. 이슈
Replies: 1 comment 1 reply
-
감사합니다. 열심히 하겠습니다. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
부제 : 경기대학교를 떠나며
안녕하세요
이 프로젝트에 대해 굉장한 애정을 가지고 활동을 하였던 5~6기 17학번 윤주현(@gabrielyoon7 )입니다.
지금 8기 활동이 시작 된 것으로 알고 있는데, 초기 활동에 많이 어려움이 있을 것으로 예상합니다. 하지만 7기의 팀장이었던 함현준(@hyunjun003)이 잘 이끌어주고 있는 것 같아 안심이 되기도 하네요.
이 글을 쓰는 이유는, CS-HOME은 왜 이 모양인지 설명하기 위해서 입니다. 아마 이 글의 대부분은 2021년 한 해에 있던 일에 대해서 이뤄질 것 같은데, 물론 현준님께 인수인계를 하면서 상황 설명을 열심히 하였지만 워낙 많은 일들이 있었던 터라 정리하여 글을 남기게 되었습니다.
활동 준비 단계
나는 CS-HOME에 어떻게 들어오게 되었는가?
2학년이던 2020년에 이은정 교수님의 객체지향프로그래밍 수업에서 CS-HOME 모집 공고를 보게 되었습니다. 당시에 제가 웹 프로그래밍 수강에 실패하여 지원할 의사가 없었으나, 한번 도전해보기로 했고 10월 쯤 뽑히게 됐습니다.
2020년 12월 인수인계 당시
제 첫 프로젝트가 시작되기 이전에 인수인계를 받을 기회가 있었습니다. 한 1시간 만에 환경 설정 하는 법과, 배포를 어떻게 하는지, 비밀번호가 뭔지를 알게 됐고, 데이터 흐름이 어떤 구조로 흘러가는지 Java 기준으로의 설명이 다였습니다.
물론 취업준비로 인해 바쁘셨다거나, 개인 사정이 있으셨을 것으로 생각하고, 굳이 시간을 내어 인수인계를 해야 할 이유가 없다는 점을 고려하였을 때 원망스럽거나 부정적인 생각이 들지는 않았습니다. 또, 프로젝트 초기 당시에 제가 질문을 자주 카톡으로 보냈는데 꼬박꼬박 답장 해주셔서 감사했습니다.
(저는 누군가에게 호의를 강요하는 것을 굉장히 안좋게 생각합니다. 오해가 없으셨으면 합니다.)
교수님께서 이 프로젝트가 그 동안 잘 관리되지 않았다고 귀띔 해주신 점, 저 뿐만이 아닌 당시 5기의 나머지 팀원들도 당황스러워 할 만큼 갑작스러운 방대한 코드가 등장했을 때 정말 첩첩 산중이었습니다.
5기의 처음이자 마지막 프로젝트
인공지능 전공 홈페이지 제작
2021년 1월 당시에 인공지능전공이 신설되어 홈페이지가 새롭게 필요했습니다.
당시 팀원들의 구성은 저를 포함한 곧 3학년으로 올라가는 학생 2명과, 곧 4학년으로 올라가는 학생 2명이었습니다. 게다가 저는 웹 수업을 듣지 못해 웹에 대해서 아는 것이 없었습니다. 후술하겠지만 이 프로젝트에서 사용 중인 기술들은 현재의 트렌드와 한참 동떨어져 있습니다.
너무 막막한 상태에서 인공지능전공 홈페이지를 제작해야 한다니 다들 깊은 고민에 빠졌고, 곧 취업 준비를 해야하는 4학년 분들은 그만둘 계획을 가지고 있었으나, 교수님의 만류에 의해 프로젝트를 계속 진행하는 것으로 결정이 됐습니다.
하지만...
프로젝트가 시작된 지 3주가 되어도 프로젝트 파악이 어려웠습니다. 코드를 함부로 건들기도 어려웠습니다. 이 코드를 건드려도 될까 싶은 생각이 계속 들었습니다.
코드 파악하느라 새 전공 홈페이지 만들 겨를조차 없었습니다. 선배님들은 JSP 과목을 수강한터라 이것저것 뜯어보면서 코드 분석에 열중이었지만, 저는 JSP가 뭔지도 모르고.. 이제 자바를 막 배운 상태라 사실 한 게 별로 없었습니다.
그래서 정말 이때 한 달은 눈뜨면 이 프로젝트 돌리면서 분석했었고, 코드가 어디에서 어디로 흐르는지 온갖 곳에 콘솔 찍어가면서 파악하느라 정신이 없었습니다. 웹을 수강 안한 저로써는 당연하지만 웹쪽은 건들 생각도 못했습니다.
결론은?
그러다가 결국 나온 아이디어가, 인공지능전공 홈페이지를 새로 만드는 것이 아니라, 기존의 홈페이지를 확장해서 사용하자는 아이디어가 나왔습니다. 어차피 학부제이고, 학부에서 두 전공을 달리 취급하지 않는다는 점을 감안했을 때 굳이 홈페이지가 독립 될 필요가 없었습니다.
따라서 URL에 따른 테마 및 홈페이지 변경으로 한 개의 프로젝트를 두 개의 홈페이지처럼 보이는 작업을 하기로 했습니다.
제가 당시에 이런 황당한 아이디어를 제시했을 때, 4학년 학생 분들은 가능성이 있다고 평가해주셔서 실제로 도전해보기로 했습니다. 전산원에 연락해서 URL을 새로 할당 받고, JSP에서는 현재 URL이 뭔지 판단하여 테마를 갈아끼우는 형식으로 한 개의 프로젝트가, URL에 따라 다른 프로젝트처럼 보이게 처리를 했습니다. 당시에는 로그인도 분리를 했으니, 물리적인 서버는 1개였지만 논리적으로는 2개의 서비스가 공존하고 있는 듯한 모습을 보였습니다.
이 과정에서 리눅스로 이런 저런 설정을 하면서 Tomcat 설정도 다뤄보는 경험을 했고, 이 때 했던 경험이 후에 저에게 많은 자신감을 줬습니다.
이 때를 기점으로 *.jsp에 테마를 결정해주는 명령어가 상단에 붙은 것 입니다.
그 후
사실 이 프로젝트가 스파게티 코드가 된지 오래였기도 하고, 취업과 직접적인 연관이 없는 기술들로 이뤄져있어서 그런지는 몰라도 팀원분들은 다들 자연스럽게 그만두게 됐습니다. 사실 교수님의 말씀에 의하면, 전통적으로 4학년들은 취업 준비하느라 프로젝트에서 손을 뗀다고 하셨던 점을 감안했을 때 그 이유가 맞는 것 같기는 합니다.
저는 (아직 3학년이기도 했고) 1~2월을 이 프로젝트에서 얻은 경험과 지식을 포기하고 싶지 않았어서 교수님께 이 프로젝트를 계속 이끌어가고 싶다고 말씀 드렸고, 6기를 모집하게 됐습니다.
6기
저는 6기에 들어서면서 프로젝트에서 뭐든지 할 수 있게 되었고, 실제로 이때를 기점으로 백엔드와 프론트엔드를 가리지 않고 학습하게 됐습니다. 당시 학교에서 웹에 대해서 배우지 못했으나, 레거시 코드를 분석하다보니 자연스럽게 알게됐습니다.
이후에 수강한 웹 관련 수업 내용도 이미 경험해본 내용들이 대부분이었습니다. 어쩌다 보니 강제로 레벨 업이 된 저는 학과 커리큘럼에 맞추기 보다는 독자적인 학습으로 나돌기 시작했던 것 같아요.
2건의 바른문제해결프로젝트
대내활동 바른문제해결프로젝트를 신청하여 사물함신청시스템과 졸업요건진단프로그램 등을 개발하여 업데이트했습니다.
다만, 지금 이 기능들이 사용되지 않아 묻혔다는 것이 마음이 아프지만.. 아무튼 간에 새로운 팀원들과 학기 중에 이런저런 개발을 하면서 기존 코드에 얹는 방식으로 경험을 쌓았습니다.
사실 이전 기수에서도 트랙 요건 진단 시스템 등 여러 확장 프로그램이 존재하였는데
그 중에서도 가장 잘 쓰이는 것이 졸업논문시스템인 것 같습니다.
여러분도 아이디어만 있다면 교수님과 잘 협의하여 프로젝트를 주도적으로 이끌 수 있습니다!
SWAIG
아마 지금 8기 여러분들이 SWAIG 코드를 가지고 작업을 하는 것으로 알고있는데, 교수님께서 소중대 SWAIG 홈페이지가 하나 필요하다고 하셔서 개발하였습니다.
사실 기존 학부홈페이지 코드를 복붙해서 개발할 수도 있었으나, 저는 이를 원치 않았습니다.
이러한 이유로 저는 새 프로젝트를 구축할 것을 계획하였으며, 기존의 legacy 코드 중, core한 기능이자 척추를 담당하고 있는 공용 Controller와 그 친구들을 제외한 모든 것을 갈아엎기로 했습니다.
이것이 SWAIG프로젝트가 내부적으로 v2라는 표현이 쓰이는 이유입니다.
중복 코드를 제거하기 위해 여러 가지 장치를 했으며, 각종 기반 프로그램의 버전 업과 DB의 단순화, Maria DB 도입, 반응형 도입 등으로 여러 조치를 취했습니다.
이때 만들어진 v2구조는 기존의 학부홈페이지로 역도입이 되어 일부 프로그램이 반영되어 있을 것입니다.
이 글을 마치며
프로젝트가 복잡해요
앞선 설명대로, 기존 프로젝트도 많이 복잡했으나 여러 활동을 거치면서 더욱 복잡해졌습니다.
관리 대상도 늘어나서 이전 보다 훨씬 난이도가 높을 것으로 예상됩니다. 심지어 두 개의 프로젝트가 현재 명백히 다른 방향으로 설계가 되어있습니다.
하지만, 데이터의 흐름 자체는 비슷하니 이를 잘 따라가는 방법밖에 없습니다.
코드를 삭제하고 싶으시다구요?
저는 추천하지 않습니다.
기존 코드를 주석처리 하는 한이 있어도, 기존 코드를 날리는 것이 거대한 프로젝트에 어떤 영향을 끼칠 지 확신하기 어렵습니다. 레거시에서 얻을 수 있는 것이나, 여러분이 모르던 구현 방법이 숨어있을 수도 있습니다.
하나의 참고 자료로 활용하는 것은 어떨까요?
프로젝트에서 사용하는 기술이 너무 오래됐어요
여러분께서 꼭 이 글을 읽어보셨으면 합니다.
이 프로젝트가 만들어지던 당시에 작성된 글인데, 당시에는 이렇게 설계하는 것이 트렌드에서 크게 벗어나지 않았습니다. 당시만 하더라도 JSP 혹은 스프링을 기반으로 동작하고, 프론트엔드는 jquery가 보조하거나 바닐라 js로 설계하였으며, 디자인은 부트스트랩이 하는 것이 굉장히 일반적이었습니다. 특히 jquery에 내장 탑재되어있는 ajax로 비동기적인 렌더링을 하는 것이 유행하던 시절에 만들어진 프로젝트입니다.
물론 지금 2023년의 시점에서 봤을 때에는 프론트엔드는 SPA가 절대적으로 유행하고 있고, 백엔드도 REST api가 유행하기에 굉장히 답답할 수 있습니다.
하지만 여러분들께서 아셔야 할 것은, 결국 진짜 프론트 실력은 바닐라JS에서 나온다는 것 입니다.
이런 기회를 얻을 수 있을 것입니다. 올드하지만, 베이스가 되는 기술들입니다.
최신 기술 학습을 게을리 하라는 의미가 아닌, 좀 더 깊은 공부를 할 수 있는 기회가 될 것입니다.
개인적으로는... 이런 기본적인 기술을 배우지 않고, 바로 최신 라이브러리 단계로 넘어가는 것은 덧셈을 모르고 구구단을 배우는 것과 같다고 생각합니다.
코드가 그지같아요
어쩔 수 없습니다. 이 프로젝트는 대부분 2학년~3학년들이 작성하는 코드입니다.
프론트엔드 측면에서...
특히 이 시기의 학생들은 JS나 jQuery를 제대로 된 학습 없이 코드를 복붙하거나 Java에서 하듯 작성하기에 JS입장에서 굉장히 비효율적인 코드가 많습니다.
백엔드 측면에서...
백엔드는 특히 v2로 넘어오면서 대부분의 문제가 크게 개선되어 지적할 만한 사항이 많이 없지만, 일부 이상한 코드가 존재하기는 합니다.
코드가 지저분하다고 생각되시면, 리팩토링을 직접 해보세요. 제 경험 상, 누가 짠 코드를 리팩토링하는 것은 클린코드 능력을 키우는데 도움이 됩니다.
(원래 남이 짠 코드를 지적하는게 젤 쉽거든요)
빨리 얻을 부분은 얻고, 경험할 부분은 경험하고, 4학년에 깔끔하게 떠나세요!
물론 저나 현준이처럼 이후에 남아서도 도움을 주려는 활동도 여러분의 학습에 굉장히 도움이 될 것입니다. 누군가에게 어떤 지식을 전달하는 것이 절대로 쉽지 않습니다.
이것도 많이 해보면 해볼 수록 스스로 공부가 잘 될 것이라고 생각합니다. 또, 지금 IT업계는 이런 문화를 지향하고 있기에 지식을 공유하는 활동이 여러분에게 큰 자산이 될것입니다.
그렇다고 해서 취업 준비 기간에 이 프로젝트에 올인하는 것은 추천되지 않습니다. 아마 교수님께서도 한 말씀 하실 가능성이 큽니다👀👀
3학년에 이 프로젝트에서 열심히 활동하시면서 기본기를 배우시고
4학년이 되면서 새로운 라이브러리나 고급 기술을 배우러 떠나세요!
프로젝트를 새로 파고싶어요
프로젝트를 신설하는 것은 좋습니다. 하지만, 여러분께서 절대적으로 고려해야 할 사항이 있습니다.
여러분들이 엄청 뛰어나서 신기술로 무장한 새 프로젝트를 파시더라도..
이 프로젝트가 결국 누군가에게 넘어갈 것을 생각하시면 유지보수 측면을 고려하지 않을 수 없습니다.
과거에도 사실 이런 논의가 수 십 차례 오갔으나, 저희가 내렸던 결론은 이랬습니다.
이 프로젝트가 저희 학과의 자산으로 남으려면 2~3학년 학생들이 다룰 수 있는 수준이어야 한다고 생각합니다.
Organizations와 Disccusions를 잘 활용하세요
이 영역에서 활동하는 것을 부끄러워하지 않고 자연스럽게 의견을 주고받으셨으면 합니다. IT에서의 협업이나 소통은 굉장히 중요한 부분입니다. 글을 쓰는 연습도 할 수 있을거에요. 그리고, 저도 이 곳에 자주 들리면서 제가 알고 있는 부분이나 도움을 드릴 수 있는 부분은 도움을 드리고 싶네요.
토이 프로젝트를 Organizations의 Repository로 등록하는 방법도 있습니다.
여러분들의 활동을 항상 응원합니다.
궁금하신 사항은 언제나 제 메일이나 글을 남겨주세요.
Beta Was this translation helpful? Give feedback.
All reactions