애자일 프로세스

고현수·2021년 8월 16일
0

개발일기

목록 보기
2/14
post-thumbnail

나는 프론트 앤드 개발자지만...

내가 프론트 앤드 개발자라고 말하면 아무도 안믿는다. 그럴만도 하다. 보여줄게 아무것도 없기 때문이다. 집에서 혼자 코드를 뚜닥거리는건 재미있다. 하지만 그 뚜닥거린걸 남들에게 공개하기가 매우 어렵다. 정리가 안된 코드를 올리는게 참 마음이 어렵다. 그런데 깃헙을 보면 난장판이다. 코드를 올리는게 부끄러운 사람이 맞는지...
그래도 나는 어딜가서 프론트 앤드 개발자라고 이야기한다. 대학교 1학년 때, 로버트 로드리게즈라는 영화 감독의 책을 읽은 적이 있다.

로버트 로드리게즈의 십 분짜리 영화학교

로버트 로드리게즈는 어디가서 영화 감독이라 말하고 다니라고 한다. 심지어 명함도 파라고 한다. 그게 중요하다고 말한다. 그래서 한동안(?) 영화 감독이라고 말하고 다녔었다. 사람들은 어떤 영화 만들었냐고 대뜸 물어본다. 그러면 독립 영화 한편 만들었다고 말했었다. 사실 스무살이니까 가능했던 것 같다. 그때는 어렸고, 잠재력이 무한한 청년으로 사람들이 봐줬기 때문에 나는 자신감있게 '나는 영화 감독입니다.'라고 말하고 다녔다. 그래서 그런지 마법 같이 매년 영화를 만들었다. 생각해보면 한 해도 쉰적이 없었다. 영화 만드는게 너무 좋았고, 보고, 쓰고, 느끼고, 말하고, 다시 만들고 하는 과정이 그냥 미치도록 좋았다.

개발자는 항상 뭔가를 만들어보면서 왜 이게 이렇게 작동하고 작동하지 않고 그럼 이 문제를 해결하려면 어떤 방법을 써야하는지 고민하는 사람이라는 말이 너무나 매력적이었다. 내 실력 앞에 직면한 사소한 문제를 아주 진지하게 파보는건 정말 재미있는 일이다. 하지만 해결하지 못한 과제들이 점점 하나 둘씩 쌓이고, 나는 재능이 없는 인간인가 고민하며 머리를 쥐어 뜯다보니 어느새 퇴사한지 1년이 다 되어가고 있었다. 이력서를 막상 쓰려고 해도 뭘 보여줘야하는건지, 프로젝트는 내가 지금까지 한 사소한 걸 다 보여주면 되는건지 혼란스러웠다. 그렇게 나는 점점 모놀리틱한 사람이 되어가고 있었다.

코로나와 애자일

어느 날, 코로나가 갑자기 세상을 덮쳤다. 나는 교회에서 봉사를 하는데 항상 사람들과 만나서 대화, 토론, 의사 결정을 하는 것에 매우 익숙했었다. 하지만 지금은 그럴 수 없는 상황이었다. 이전에 종이로 주보를 계속 만들어왔는데, 비대면 예배가 지속되면서 정보를 공유하는 일이 꽤 어려운일이 되었다. 그래서 방송실에서 항상 사소한 실수가 반복됐다.

내 친구는 간단하게 주보를 공유할 수 있는 웹 사이트의 필요성을 계속 말했다. 물론 몇 년 전부터 구글 드라이브를 통해서 정보를 공유하고 있지만 모두에게 균일하게 공개되는 것도 아니고, 공유를 했다가 다시 공유를 끊는 일이 번거로웠다. 그래서 나는 그냥 간단하게 주보만 볼 수 있는 교회 홈페이지를 만들기로 했다.

처음에는 생각을 하다보니 서비스를 하고 싶은게 많아졌다. 그러다 보니 또 다시 나는 모놀릭하게 생각이 흘러가고 있었다. 나 혼자 해서 되면 좋겠지만 안될 가능성이 높았다. 친구는 나를 보고 소리쳤다. '그냥 일단 간단하게 주보만 올리고 수정하고 읽을 수 있는 것만 만들어봐!' 맞다. 지금 당장 수요는 주보의 원활한 공유니까 그것부터 하자.

간단하게 축소한 과정

일단 나 혼자서 모든 것을 다 해야했기 때문에 기획부터 개발까지 모든 과정을 다 최소화했다.

  1. 기획은 대강 Route를 어떻게 할 것인지 계획했다.
 home: "/"
 weekly List : "/weekly"
 	create : "/create"
 	read : "/:id([0-9a-f]{24})"
 	update: "/:id([0-9a-f]{24})/edit"
 	delete : "/:id([0-9a-f]{24})/delete"
  1. 미니멀리즘
    디자인은 최소한으로 했다. 나는 디자인을 하다가 서비스를 만드는걸 포기하곤한다. 힘이 너무 빠지니까.
  2. 개발은 Back-end, front-end 순으로 했다.
    일단 기능이 작동이 되고 난 다음에 프론트를 했다. 백앤드, 프론트를 왔다 갔다 하다보면 머리에서 열이 난다. 기능이 작동이 되면 프론트를 디자인 하는게 효율이 가장 좋았다.
  3. 관리자 로그인 기능만 구현
    관리자 로그인 기능만 구현했다. 관리자만 쓰기, 수정, 삭제가 가능해야했다. 그래서 onlyAdmin이라는 middleware를 만들어서 관리자만 접근 가능하게 했다.(프론트 버튼 감추기, 백앤드 redirect하기) 하지만 누군가가 url로 쓰기, 수정, 삭제을 시도할 수 있기 때문에 컨트롤러에서 session을 이용해서 로그인한 사람과 글쓴이가 같아야 가능하도록 했다.
  4. heroku 배포
    히로쿠나 mongoDB Atlas가 돈이 얼마나 들어가는지 알지 못하기 때문에 서비스를 배포하기가 망설여졌다. 그래도 해봐야 얼마나 돈이 나오는지 아니까 그냥 배포했다.

애자일 과정을 반복

서비스를 배포하고난 뒤 첫 일요일이 되었다. 사용자는 생각보다 많이 없었지만 어쨌든 누군가는 사용을 하긴 하더라. 첫 술에 배불를 수 없다. 처음에 '주보'라는 메뉴밖에 없었지만 햄버거 메뉴를 만들었다. 그리고 내 예상대로 동작하지 않는 것들을 고쳐나갔다.

  1. schema 수정

    • ref : 어느 사용자가 작성한 글인지
    • views : 조회수
    • 성경 주소 링크 객체화
  2. helmet 추가

    • CSP : 짜증나서 뺐는데, 보안을 생각하면 추가를 해야했다.
    • hidePoweredBy : x-powerd-by 가리기 이건 취약점이 공개되면 해커들에게 공격당하기 쉽기 때문에 가려야한다고 한다.
    • hsts : 브라우저에 https로 강제로 가도록 저장하는 기능
  3. DNS, https 등록

    • 마음에 드는 도메인이 없어서 3일간 뒤적거리다가 어쩔 수 없이 내가 원하는 것과 가장 비슷한 이름을 샀다.
    • 일주일간 뻘짓하다가 namechep 실시간 고객 채팅으로 해결했다.
    • heroku를 유료로 등록하게 됐다. 이번달은 거의 돈이 안나왔다. 접속자가 많이 없다.

주니어는 애자일이어야한다

항상 프로젝트를 시작도 못하고 발만 동동구르던 나에게는 이번 경험은 신선한 경험이었다. 지금도 교회 웹 서비스는 계속 조금씩 개선 중이다. 개발을 UX 관점에서 접근하는 것은 내가 코드를 어떻게 개선하고 싶은지 생각하는데 많은 도움이 된다. 예를 들면 로그인 해야만 댓글을 달 수 있는데, 로그인을 하고 나서 댓글을 달아야하는 페이지로 다시 돌아가는 기능이나, 매주 출석 체크를 할 수 있는 버튼을 특정 시간에만 보이도록 하는 기능을 구현해봤다. 사용자 관점에서 뭐가 필요할까 고민하다 보면 어떤 기능을 구현해야하는지 고민하게 되는 것 같다.

주니어는 애자일이어야한다. 모놀리틱해서는 안된다. 항상 완성과 미완성 사이의 과정 안에 있어야한다. '완벽하게 완성하려고 해서 과연 내가 사회인이 될 수 있을까?' '그렇다고 미완성에 가깝다면 누가 나를 좋은 개발자라고 인정해줄까?'라는 고민 가운데서 성실하게 배워야한다.

profile
2021 - 프론트 앤드 개발자가 되고싶다.

0개의 댓글