과정을 시작한지 벌써 8주차가 끝나가고 있다. 4.11~4.24 까지 모듈프로젝트 기간이여서 게시글을 올리지 못했다. 학부시절 공부를 하나도 안한 전공자로서 이번 프로젝트는 나에게 내 현위치를 알려주는 명확히 알려주는 뼈아픈 프로젝트 였다. 난 전공자일뿐 졸업프로젝트를 제외하고는 프로젝트를 전혀 한적이 없기 때문이다.
이번 모듈 프로젝트의 취지는 지난 6주간 배운 내용을 전체적으로 복기하는 프로젝트 였다.
결과만 본다면, 분명히 난 6주전에 나보다 성장 하긴 했지만, 19기 동기들 안에서 두각을 드러내는 성과는 내지 못했다. 확실히 프로젝트를 몇번을 더 해보고 프레임워크를 다뤄본 사람들이 확실히 더 좋은 프로젝트 퀄리티와 산출물이 나왔다. 여튼, 차근차근 이번 모듈 프로젝트를 복기해보자.
롤갤러리
주제는 <정보보안을 주제로한 학술게시판>을 만드는 것이였다. 전체적인 UI/UX는 국내 유명 커뮤니트 디씨인사이드를 적극 차용했다. 난 이 프로젝트에서 Django 프레임워크를 사용하여 게시판 CRUD 기능을 구현하고 웹 취약점분석 임무를 맡았다.
시작페이지
사전 구현 및 서비스 구현 (4.09~4.22)
나를 포함한 우리 조원들 모두 개발 실력이 없었다. 전공자 3의 비전공자 2명이 였지만, 하나같이 Django,aws를 이번 과정에서 처음 접해봤고, 경험이라고는 속전속결로 진행되는 실습들이 전부였다. 그리고 난 하나를 알려주면 하나도 이해하기 힘든 사람이기에 처음 개발 환경 구축부터 애를 많이 먹었다.
글 작성 페이지
처음에 게시판 페이지를 만들때 계속 에러가 발생것이 DB 에러였다. DB 이름을 적을 곳에 테이블 이름을 적는 다는가, python manage.py migrate로 테이블을 생성해야하는데 workbench에서 임의로 테이블을 작성하고, workbench에서 insert into를 한다든게 해서, Django와 db의 충돌에러를 해결하느라 한 2일은 db를 생성했다, 지웠다가를 반복했다.
상세페이지
그 다음 난관은 댓글 생성 및 삭제 기능 추가 였다. 처음 게시글 생성 기능을 만들때 에러가 너무 많이 발생해서 난 결국 게시글 객체안에 title, content 필드만 만들었었다. 하지만 댓글 기능을 추가하려면 각 게시글의 ID 필드를 추가하여 각 게시물 당 댓글 필드들을 만들어 줘야 했다. 또한 나중에 가입자들만 댓글을 달게 하고 본인이 작성한 댓글만 삭제하는 기능을 추가 해야해서 writer 필드를 또 만들어 줘야 했다. 구글에 떠다니는 흔하디 흔한 게시판 만드는 방법론이지만, 내 코드의 온전히 적용하는건 처음하는 나에겐 많은 시간과 시행착오가 필요 했다.
게시판 목록 (발표를 생각해보니 롤갤러리 처럼 옆에 작성시간도 넣을걸 그랬다...)
그 다음 난관은 이미지 업로드 였다. html에 이미지 삽입 버튼을 추가하는건 어렵지 않았다. 문제는 aws s3와의 연동 이였다. 이게 models.py에서 imagefield를 생성 -> settings.py에 aws s3 루트 설정 > html에서 게시글 객체안에 imgfield를 불러오면 된다. 그런데 이게 웃긴게 막상하면 별거 아닌거 같지만, 거기까지 과정이 어려웠다.
config.settings -> 앱 이름
Gunicorn, Nginx 구글링해서 설정하다보면 문서들이 살짝살짝 다르다. 문제 발생했던 점은 gunicorn --bind 0:8000 [wsgi가 있는 앱 이름].wsgi:application 이 명령어다. 이 프로젝트는 accounts, board, homemain등 다양한 앱을 만들었는데 <앱 이름> 이라고 해서 모든 앱이름을 넣어 봤지만, Gunicorn이 서버사이드에서 요청을 받아오지 못했다. 강사님께 질문한 결과 앱이름은 config였고 이는 runserver를 해보면 나오는 using stteing '앱이름.settings.py' 였다. 2시간을 찾은 결과 config로 Nginx로 무사히 연결할 수 있었다. 이제 질문할때마다 망설여지긴한다. 내가 너무 기초적인걸 질문하는것이 아닌가 하고.
우리는 처음의 우리의 실력에 알맞게 딱 기본적인 기능만 구현하자고 했고, 누가 실력이 월등히 특출나서 한 사람으로 인해 월등한 프로젝트를 만들진 못했다. 그래도 각자 맡은 임무를 다 완료해주었고, 개개인이 할 수 있는 역량은 최대한으로 끌어올려다고 생각한다. 하지만 발표당일날, 다른 조원들의 프로젝트 결과를 보고 우리끼리의 만족으로는 객관적으로 인정을 받기 힘들다고 판단했다. 디테일하지 못한 UI, 다른 조들보다 현저히 많은 취약점들은 발표가 진행될수록 부족한 점만 상기되는 시간 이였다. 우리는 aws 취약점, 웹 취약점에서 각각 45.9%, 48%라는 결과는 확실히 평균 이하였다.
그래도 내가 조장으로서 더 디테일을 챙겼어야 했는데 그러지 못함 점. 백앤드 개발도 처음해보는지라 aws 배포는 다른 조원에게 모두 맡겼다. 물론 그분도 모든게 처음인 사람이다. 그러나 초기에 아키텍쳐의 비해 최종 아키텍쳐는 비교적 쉬운 구조로 짜여졌다. 이걸 접했을때 나는 내 개발하기 벅차 초기 아키텍쳐를 끝까지 이끌어내지 못했다. 하지만 막상 다른 조들은 다 구현했더라. 거기에도 개발을 처음하는 사람, 배포를 처음하는 사람이 분명 있었을텐대 나만 결과적으로 포기한 사람이 되어버렸다.
1번이랑 비슷한 맥략인데, "처음하는 내가, 우리가 이 정도 했으면 잘했지" 라는 마음가짐이다. "이 정도"는 정말 어디에 자신있게 내밀지 못하는 정도이다. 정말 뛰어난 조들은 누가봐도 잘했고, 박수만 받다가 끝났다.
내가 발표를 너무 못한다. 내가발표를 못하는걸 알았고, 이에 따른 대본도 미리 준비 했지만, 좋은 피드백은 들을 수 없었다. 오늘 (작성일: 4/26일) <클라우드 기반 취약점 진단 및 대응 실무>에서 <2024 sk쉴더스 클라우드 보안 가이드> 수업 중 발표를 맡았는데, 과제 자체를 이해를 못했고, 당연히 발표는 산으로 가서 강사님이 다음부터 다른 조원이 발표하라고 말씀하셨다. 이것도 개선해야할 점이다.
오늘 4.26, 19기 과정은 34%를 달려가고 있고, OT 자료를 다시한번 확인했다.
앞으로 모듈프로젝트 2, 최종 실무 프로젝트 2개의 거대 프로젝트가 남아있다.
여태 난 딱 평균점수의 1차 사후 평가, 남들에 비해 부족한 모듈프로젝트라는 성적을 내고 있다.
야구로 비유하자면 1스트라이크, 1파울볼 같은 느낌이다. 앞으로 장타, 홈런치고 모의해킹 직무로
커리어를 시작하고 싶다. 열심히 하는건 부족한거 같다. 다 열심히 하더라. 잘 해야지
안녕하세요 혹시 파이썬 Django 말고 자바 스프링 기반을 사용하는 경우도있나요? 위 과정은 전부 파이썬 위주 일까요 ?