동아리 운영을 반년 정도 하면서 느낀점

Devdubu·2022년 4월 20일

코딩동아리

목록 보기
9/9

지난 세월에 대한 회고

벌써 내가 코딩 동아리를 운영한지 6개월이라는 시간이 지났다. 역시 시간은 정말 빠르게 흘러가는 것 같다.
벌써 우리 대학교에 코딩 동아리를 설립하고 운영한지 6개월이 지난 김에 나만의 회고를 블로그에 적어보려고 한다.
내가 이 고민을 기록해서 나중 후대로 가면 갈 수록 조금 더 견고해지고, 충청권에 유명한 코딩동아리가 될 수 있기를 바라는 마음이다.

다양한 사람들의 니즈

제일 어려웠던 부분이다. 과 동아리도 아닌 중앙 동아리 소속이기에,,많은 학과들이 지원을 했으며, 다양한 사람들을 만난다.
그 중에서도 개발에 대해서 모르는 사람, 나와는 다른 부분에서 개발에 흥미가 있는 사람, 나와는 맞는 사람들 등등 다양했다.

작년 21년도에 내가 동아리를 창설하고 사실 일일이 조별로 모두 만남을 가졌다. 나와는 친해져야한다는 명목도 있고, 현재 사람들과 친하게 지내자는 목적도 있지만, 나는 그 목적은 아니었다
나의 궁극적인 목적은 다양한 사람들의 니즈를 파악하고 싶었다. 즉 데이터를 모으고 싶었다.

다양한 사람들의 다양한 니즈를 사실 나 혼자서 감당하는 것은 불가능 했다. 이미 인공지능을 배우면서 넓고 얕은 지식에 대한 한계를 깨달았기 때문이다. 그래서 넓고 얇게 공부하는 것보다는 이미 백엔드로 마음을 굳혔기 때문에 백엔드로 좁게 깊게 배우고 싶었다.
그래서 우선적으로 데이터를 모아보았고,, 여러차례 투표도 한 결과 웹과 모바일이 많이 선호를 하셨고, 이외에 빅데이터, 인공지능도 꽤 많았다.

프로젝트 착수

조금은 급한 감이 있었다. 사실 많이 급했다. 나의 개인적인 생각으로는 22년도 신입생들이 들어오기 전에 홈페이지를 만들고 싶어했기 때문이다. 홈페이지를 서비스를 해야지, 결과물이 있어야지 나름의 홍보가 될 것 같아서 이다. 하지만, 다들 대학생이다보니 시험 기간이라는게 있기에 어쩔 수 없이 종강을 하고 바로 시작을 했다.

힘겹게 프로젝트를 시작을 하였다. 내가 프론트 팀은 2번, 백엔드 팀은 2번의 회의를 거쳤다. 그리고 전체 회의도 2번 정도 거쳤다.
프로젝트 인원들도 꽤 많았다 13명 정도 있었고 그중 프론트 5명이고 나머지가 백엔드를 지원했다.


이 프로젝트가 개발을 공부하면서 처음 협업 프로젝트였다. 그러다보니 이렇게까지 많이 커뮤니케이션이 필요한지 처음 알게 되었다. 물론 이게 내 성격탓일 수도 있다. 정말 디테일한 한 부분도 상의를 해야한다고 생각을 했기 때문이다.
고등학교 과제 연구 일때도 팀 친구들이랑 거의 매일 만나서 얘기하고 실험했을 정도이다보니,,, 프로젝트를 진행하다보면서 연락을 정말 많이하며, 만나기도 많이 만난 것 같다.

확실히 기초 공사가 매우 힘들다고 다들 그랬는데 정말로 힘들다.

각 페이지의 역할도 짜야하며, 어떤 방식으로 설계를 할것인지, 어떠한 방식으로 데이터를 받아올 것인지, 조금 더 효율적으로 페이지를 쓰는 방법은 무엇인지..등등 정말 많은 생각을 했다.

사실 이걸 동아리원들이랑 같이 했어야했지만,,대부분은 개발이 처음이신 분들이고, 그 당시에는 임원진도 없었고 오로지 나 혼자였다보니, 그 부분을 나 혼자 생각했다는게 가장 어려웠던 점이었다.

실제 서비스를 할거고, 그걸 학교 차원에서 홍보를 해달라고 부탁도 할 것인데...완벽하게 보이고 싶었다보니 더 그랫던 것일수도 있다.

하지만 그로 인해서 내가 조금 더 한개의 서비스를 추가할 때 고려해야할 부분을 생각할 때 도움이 되었던 것 같다.

프로젝트(총동아리, 동아리 홈페이지) 진행 및 코드

다른 사람들과 프로젝트를 처음 하다보니, 많이 어색했다.
거의 내 코드만을 보고 있었는데 남들이 사용한 코드를 보면서 이게 뭔지 해석을 해야하고, 이게 어떠한 의도로 이렇게 한거지 면밀히 들여다본게 처음이었다보니 어색했고, 어쩔 때는 왜 이렇게 했을 까 많은 의문점이 남았었다.

그래서 이때 부터 내가 타이핑하는 코드가 남들이 보기에는 편한가? 라는 생각을 가지기 시작했다.
특히 '클린코드'라는거에 관심이 많이 가지기 시작했다. 그래서 필자는 글을 쓰는 시점에서 '클린코드'책을 사서 읽는 중이다. 이 책에 후기는 나중에 적어볼 예정입니다.

그리고 확실히 깨달은 것은 예전에도 알고 있었지만, 주석의 중요성인 것이다.
주석에 디테일하게 적어준 사람의 코드와 그렇지 못한 사람의 코드는 정말 이해하는데 하늘과 땅 차이다.
개발자에게는 시간이 생명이기에, 그 코드를 이해하는지 못하는지에 대해서 들어가는 시간의 차이가 정말 많이 난다.
특히 프론트 CSS에서 많이 느꼈다.

어떻게 클래스가 이어져있는지, 어떤 걸 의도해서 position: relative를 했는지 이러한 사소한거 하나하나가 나중에 유지 보수에서 무언가를 추가 할 때 에러의 요소인가 아닌가가 드러나는 것이다.(이러한 요소 때문에 프론트에서 에러가 진짜 많이 났다.)

이때를 기회로 보기 편한 코드, 주석에 대한 중요성을 정말 간절하게 느꼈다.

백엔드에서는 그에 대한 구조를 거의 내가 다 짰다. 사실 백엔드는 특성상 선 요구 지식이 많다보니, 프로젝트 부원들이 따라가지 못하고 있었다. 그렇다 보니 나와 부회장 친구가 우선적으로 nodejs를 이용해서 간단하게 express를 이용해서 모듈 정도의 간단한 백엔드 기능 구현만을 했다.
정말 별거 없는 코드...

백엔드를 하면서 느낀 점은 보안에 대해서 많이 느꼈다.
실제 우리 동아리는 AWS EC2, AWS S3를 사용을 하고 있다보니, 결국 돈이 나가는 부분이다.
실제로 아무 생각 없이 github에 커밋 작업을 했는데 우리 깃헙에 awsconfig가 올라가는 참상이 벌어졌다.

나는 aws를 해본적이 이제 처음이고, 돈을 내는 서비스를 많이 해본적이 없으니...이에 대해서 무지 했던 것이다. 그걸 계속 방치하다가, 문득 부회장이 나에게 awsconfig는 올리면 안된다고, 다른 사람도 그 서버 해킹당해서 엄청나게 청구 당한적 있다고 한 말을 듣고
그 때부터 보안에 대한 경계심이 커졌다.

그러다보니 github에 있는 예전이라면 거의 쓰지 않았던 gitignore을 처음 사용해보았고, 처음 설정을 안해놔서..매우 삽질을 했지만 어찌 해서 설정을 해서 자동으로 차단하게끔 설정을 했다. .env도 마찬가지로 그렇게 설정을 했다.

동아리 홈페이지 제작 완성

이제 탈도 많은 동아리 홈페이지 제작이 완성이 되어서 이제 서비스만 하면 되는 상황만이 남았다. 문제는 aws ec2이다. 내가 이상한건지..는 모르겠지만, 이놈의 aws 공식 문서는 봐도 잘 모르겠다...공식 문서랑 친해질려고 해도 자꾸 aws가 튕긴다. 짜식...그만좀 튕겨..
아무튼, aws ec2를 처음 올려보고 도메인을 검색했는데 안된다. 역시 한번에 되면 그게 개발일리가 없지

그래서 폭풍 구글링을 한 결과 서버과 도메인을 묶어야한다고 한다. 그래서 나는 hosting.kr에서 도메인을 사고, 그걸 aws ec2기기와 묶고, 이제 서버 컴퓨터 원격 접속시에 도메인 이름으로 해도 되게끔 설정이 된 다음에 이제는 npm start를 하고 나서 검색했는데 안됐다.

뭐지...무슨 일이지..이 생각을 계속 하고 있었다. 홈페이지 서비스는 우리 동아리 홈페이지가 먼저 시작이 되었고, 이 부분의 서비스를 올리는 건 부회장에게 맡겼었다. 그러다 보니 나는 이 부분에 대해서 모르고 있었다.

그래서 전에 했던 우리 동아리 홈페이지의 설정을 참고 하던 중..포트 설정이 잘못되었음을 찾아냈다...
develop용은 4000포트, aws ec2는 3000포트로 설정이 되어있었다.. 참나.. 찾느라 정말 오래걸렸다.. 보안 그룹, ec2 설정 등등 관련 사항을 다 찾아봤으니..

그래도 찾았으니 이제 npm start를 해보았다 다행이 정상 작동이 되어서 이제는 pm2 start를 하면서 서버를 닫으면 되겠다. 이러고 있었는데,,,어디서 처음 보는 요류가 생겼다. bin파일에 '..' 경로 오류가 뜨는 것이다.
난생 처음 보는 오류에다가 도대체가 먼저 서비스 되는 코드와 완벽하게 같은데 무슨 차이점인지 모르겠고,, 계속 구글링을 하다가 찾은 stackoverflow의 아주 미세한 답변이 있었다.

우리와 완벽하게 호환되는 상황은 아니었지만, node_modules를 복사해서 붙여넣거나 전송할 때 완벽하게 전송이 되지 않는 경우가 많다. node_module을 삭제하고 다시 해봐라 라고 나왔을 때 반신반의 했지만 우리 상황과 얼추 비슷했다
scp로 우리도 복사본을 전송하는 것이다 보니.. 이것도 같은 상황인듯 하니까 다시 삭제 후 깔았더니 그에 대한 오류가 사라졌다!.!

또 문제가 생겼다. ㄱ..그만.. 이제는 다른 오류가 뜨는 것이다. 정확한 에러 명은 기억이 나질 않지만, mongodb에 관련된 에러였다. 이에 대해서도 완벽하게 우리와 맞다기 보다는 비슷한 상황을 보았고, 그 상황을 보다보니..우리꺼 nodejs가 버전이 너무 높아서 mongodb와 충돌이 난 케이스 인거였다. 실제로 우리 홈페이지는 node 버전이 12이였고, 총동아리 홈페이지는 14인 상태이다. 그래서 12로 낮추니 해결이 말끔히 되었다.

그리고 이제 대망의 npm start를 했을 때 문제가 일어나지 않았고, 사이트도 정상적으로 접근이 가능했다.
이제는 최종으로 올리면 되겠다 하고, pm2 start를 할때 문제가 생겼다.

후..뭐든 한번에 넘어가는 적이 없다. 계속 에러가 뜨고 그 전 셋팅은 다 해결이 되었는데 무슨 에러지....이러고 고민을 하고 있는 와중에 pm2 start app.js 를 사용하고 있었다.

아시는 분들은 아시겠지만, nodejs를 사용했으면 pm2 start --name node.. 처럼 node를 적어야하는데 안적은 것이다. 이것도 정말 힘겹게 구글링을 했다.. log를 검색해보았지만 당연하게도 이상한 오류가 뜬다. 그 이상한 오류를 검색했더니 더 이상한 답변이 뜬다...
그거에 의심이 들어서..내가 잘못된건가 성찰을 해보고자 pm2 작성법을 다시 보았는데 내가 잘못했던 것이엇다..ㅠ
그래서 이를 결국은 해결해서 총동아리 사이트도 서비스가 개시가 되었다.

프로젝트 완성! 이제 유지보수 시작

드디어 현재에 대한 생각이다. 현재 우리 동아리의 계획은

  1. 학교와 협업하여 우리 학교만의 학생인증 절차 - 학교 로그인 통과 불통으로 인증
  2. aws-congnito를 이용해서 로그인 기능 추가
  3. 관리자 페이지 추가
  4. SQL로 변경
  5. React로 프론트 변경
  6. 글쓰기 알고리즘 개발

등등이 이번 2학기가 되기 전의 계획이다. 처음에는 그렇게까지 많지 않으니 가능하겠지..? 이런 안일한 생각으로 진행을 했었다. 하지만,,생각보다 변수와 고려해야할 부분이 많았다.

로그인기능

특히 로그인 기능에서 고려해야할 부분이 많이있었다.
로그인을 진행하려고 하다보니, 개인 정보에 대한 부분이 가장 컸다.
어디까지가 개인정보인가..라고 생각을 하고, 내가 학교 근로를 하면서 많이 들었던 것이 개인정보 보호법 때문에 파쇄해주세요 이었다. 문득 생각이 나서 검색을 하니 생각보다 복잡하고, 개인정보로 걸리는게 많았다.
이에 대해서 개인정보를 저장하지 않으면 안되는게..또 이 부분을 관리자페이지에서 활용해야하기 때문에 저장을 안할 수 없었다. 그래서의 해결책은 양방향 암호화였다.

처음에는 비밀번호만 단방향 암호화를 걸면 된다고 생각을 했었는데 개인 정보에 대한 부분도 양방향 암호화를 해야한다고 하니..그 키에 대한 보안 부분에 대해서도 고민이 되기 시작한다. 사실 로그인 기능만 된다면 서비스 확장은 어렵지 않지만, 제일 관권이 로그인 기능이기도 하다. 이에 대한 부분은 조금 더 고민을 해보고 진행을 해봐야겠다.

MongoDB -> MySQL or PostgreSQL

그리고 이제는 MongoDB를 놓아주려고 한다. NoSQL이 구현이 쉽고, 간단해서 사용을 했지만, 데이터를 추출하고, join하고, 여러개의 쿼리를 사용하기에는 생각보다 많이 불편했다. 그리고 우리가 컬랙션을 나눈 것도 거진 sql식으로 나누다 보니 굳이..우리가 불편한 nosql을 고집할 이유가 없어졌다.

그래서 로그인이 되기 전에 aws-rds를 이용해서 우선 DB이전을 하려고 한다.

관리자 페이지

그 다음에는 관리자 페이지인데..이 부분까지 내가 생각하기에는 머리가 좀 아프기도 하다보니..이건 프론트 친구들과 상의를 해서 어떤 기능, 디자인,,등등 이건 상의를 해봐야겠다.

글쓰기 알고리즘

이게 정말 나를 괴롭히는 것 중에 한개 인것 같다.
사실 잘 모르겠는 부분이다. 이미지파일과 같이 큰 파일은 aws-s3에 저장하는 것도 알고 있고, 그 경로를 DB에 저장하는 것까진 ok

그러면..임시저장은 어떤 방식으로 진행되는 것이고,, 내가 이미지를 넣으면 바로 s3로 업로드가 되는 건인지? 만약 내가 이미지를 첨부하고 삭제하면 바로 자동적으로 삭제가 되는 것인지? 이에 대한 부분이 의문점이면서 그러면, 이벤트로써 이미지를 사용자가 삽입한다..라는 것을 알아야하는데 이 부분이 제일 어려운 것 같다.

그리고 DB에 순서대로 이미지를 전달해야하는 것인데..

우리가 쓰는 방식인 div contenteditable은 태그 통째로 DB에 저장하는 방식인데...img 태그에 따로 그걸 삽입해야하는 것인지 조금 복잡하고, 글을 보다싶이..
머리 속에서도 정리가 잘 안된다ㅠ 이 부분은 연구를 해봐야겠다 ㅠㅠ

마무리

정말 그동안 한 일이 많았지만, 기록을 못한 것에 대한 후회가 조금 크다.
워낙 바쁘기도 했지만, 마음 먹으면 할 수는 있었을텐데..
이제부터는 꾸준히 기록도 해보고, 공부한 건 노션이 조금 더 편해서 에흠..

공부를 어느정도 하고 개념이 잡히면 velog에도 기록을 하고 해야겠다.

동아리를 만들면서 다른 사람들을 도와주려고 했던 목적이었지만, 오히려 내가 더 성장했다는 느낌을 많이 받았다.

지금까지의 회고를 한다면, 아직 너무 부족하다는 걸 느꼈다. 처음에는 현업에 있으신 경력자 분들과 얼마나의 격차가 있었는지 가늠이 되질 않았다.

그런데 점점 서비스를 진행하려고 하고, 프로젝트 규모가 커짐에 따라서 점점 현업에 근무하신 분들과 격차가 하늘과 땅차이라는 걸 알게 되었다.

그래도 이번 년도 목표는 그러한 격차를 조금이라도 더 줄이고 싶다.

아직은 부족하다는 뜻은 이룰건 더 많이 있다는 것이라는 생각을 가지고 올해를 임해야겠다.
다행히 동아리를 만든 보람이 많이 있고, 잘한 선택이었던 것 같다. 처음으로 단체에 대한 애정이 생겼던 것 같다.

profile
DevOps에 관심 많은 FrontEnd 개발자 입니다

0개의 댓글