제 이력을 보신 분들은 아시겠지만, 저는 한양대학교 컴퓨터 중앙동아리인 HUHS에서 굉장히 오래 활동했습니다. 1학년이었던 2015년에 입부해서, 현재까지 활동을 하고 있으니, 글을 쓴 2023년 기준으로 벌써 8년차 회원이 됬네요. 동아리에서 회장/부회장 1번씩 해 보고, 거의 매 년 스터디를 1회 이상 열면서 열심히 활동했고, 그 덕분에 좋은 사람들을 참 많이 만나게 되었습니다.
저희 동아리에는 휴즈넷이라는 웹사이트가 있습니다. 2015년이었나, 16년이었나... 그 때쯤에 제 동기와 선배님들이 만드신 동아리 소개 및 게시판, 출석, 위키 등의 기능을 담고 있는 웹사이트죠. 몇 년간 유용하게 사용하고 있었지만, 이걸 만들었던 회원들이 전부 졸업을 하면서 인수인계가 거의 이루어지지 않았고, 코드 또한 거의 개선된 적이 없었습니다. 이 때문에, 가면 갈수록 여러 불편함과 버그가 눈에 띄게 되었지만, 유지보수를 할 방법은 거의 전무한 상황이었습니다.
작년 말에, 당시 동아리 부회장으로부터 위 문제를 전해 듣게 되었고, 둘이서 이야기를 하다가 '이왕 이렇게 된 거, 나 졸업하기 전에 휴즈넷 2.0을 새로 만들어볼까?'라는 생각을 하게 되었습니다. 처음에는 생각만 있었지만, 저랑 이 이야기를 했던 후배가 적극적으로 이 프로젝트를 추진하려고 했고, 결국 이번 1월부터 3월까지 휴즈넷 2.0을 개발하는 팀이 꾸려지게 되었습니다.
현재 팀원은 기획+검수 2명, 디자인 2명, 웹 프론트 1명, 서버 1명으로 구성되어 있으며, 제가 담당한 부분은 서버입니다. 이 개발기는, 휴즈넷 2.0을 개발하면서 겪었던 다양한 일들과, 그 과정에서 제가 어떤 생각을 했는지, 왜 그런 결정을 내렸는지 정리하기 위해 쓰는 글입니다.
우선, 휴즈넷 2.0 서버를 개발하기에 앞서, 어떤 DB를 쓸 지,어떤 프레임워크와 언어를 쓸 지 고민을 했습니다. 제 스스로도 생각해보고, 주변 개발자들에게 조언을 구한 결과, 아래의 기술 스택을 사용하기로 했습니다.
우선, 기술 스택을 선택하기 위한 기준을 먼저 세웠습니다. 그 기준은 아래와 같습니다.
각 기준에 대한 이유는 다음과 같습니다.
초기에 입문하기 쉬운 기술
a. HUHS 회원들 중, 처음부터 개발을 잘 아는 상태로 들어오는 분들은 거의 없었습니다. 오히려 개발을 잘 모르는 상태로 입부하고, 이 동아리에서 다양한 활동을 하면서 개발 지식을 익히고, 성장하는 사람들이 대부분이었습니다. 즉, 처음부터 개발에 익숙한 사람은 거의 없었습니다.
b. 또한, 백엔드 개발자를 지망하는 사람도, 백엔드를 할 줄 아는 사람도 굉장히 적은 편이었습니다.
⇒ 이 때문에, 저 다음에 휴즈넷 서버를 맡게 될 사람은 백엔드에 익숙하지 않은 초보 개발자가 될 가능성이 더 높다고 생각했습니다. 그리고 이런 측면 때문에, 초보 개발자들이 초기에 입문하기 쉬운 기술로 서버를 짜야 휴즈넷을 계속 발전시켜 나갈 수 있다고 봤습니다.
인터넷에 자료가 많고, 사용하는 사람이 많은 기술
a. 위의 1번 내용과 연결되는 부분입니다. 인터넷에 자료가 많고, 물어볼 사람이 많은 기술을 쓰면, 문제에 대처하기도 더 편합니다. 구글링하면 거의 모든 것이 나오기 때문입니다.
b. ‘사용하는 사람이 많은 기술’을 중요하게 여긴 이유는, 실제로 휴즈넷 백엔드를 관리하면서 얻게 되는 포트폴리오와 지식을 실제 취업 현장에서도 활용할 수 있게 하고 싶었기 때문입니다. 만약 사용하는 사람이 많지 않은, 특히 실무에서 잘 쓰지 않는 기술로 서버를 짜게 될 경우, 여기서 얻는 포트폴리오를 취업할 때 써먹기 쉽지 않을 것이라고 생각했습니다. 저 뒤에 이 프로젝트를 맡게 될 개발자 분이, 이 프로젝트를 유지보수하고 개선하는 경험을 하고, 그런 경험이 그 분들의 취직과 취업에 도움이 되었으면 하는 바람이 있었습니다.
유지보수하기 쉬운 기술
: 유지보수가 어렵다면, 사실상 제가 만든 백엔드 서버 코드를 다른 누군가가 이해하거나 건드릴 수가 없게 되고, 그 상태가 유지되면 결국 휴즈넷 3.0을 만들어야 하는 사태가 나올 것이라고 생각했습니다.
결론 : 그래서 Node.js + Express를 선택했습니다.
(2023.01.13 변경)
: 원래는 JavaScript보다 TypeScript가 학습 곡선이 높고, 따로 배워야 한다는 부담감이 있다는 문제점 때문에 JavaScript를 사용하려고 했습니다.
그러나, TypeORM을 도입하려고 하니 TypeScript를 거의 필수적으로 써야 한다는 점을 알게 되었습니다. 이 때문에, TypeORM을 쓰고 JavaScript를 버리느냐 VS JavaScript를 유지하고 TypeORM을 버리느냐의 고민이 생겼습니다.
이 문제에 대해 저희 회사 백엔드 개발자분과 대화를 나눠봤는데, 그 분께서는 절대적으로 TypeScript를 쓰는 쪽을 추천하시더라고요. 다양한 이유가 있었습니다.
위 이유들 때문에, JavaScript 대신 TypeScript를 선택했습니다.
그냥 SQL문을 서버에 쓰는 것과 비교했을 때, 상대적으로 코드를 이해하기 위한 난이도가 더 낮고, 유지보수성은 더 높다고 느꼈기 때문에 도입했습니다.