[우리 FISA] 클라우드 서비스 개발 - 2주차 회고

이승준·2025년 1월 11일

회고록

목록 보기
3/21
post-thumbnail






1주차 회고록에 이어 2주 차도 작성해보려고 한다. 내가 회고를 쓰고자 하는 이유는 학부생 시절이나 현장실습을 할 때 나름 열심히 보낸 것 같은데 정작 6개월 혹은 1년 이상 지나면 하나도 기억이 안 나고 의미 없는 시간처럼 느껴지는 게 현타 와서 기록이란 걸 해보기로 했다. 매일 출근하는 것만으로 체력이 0이지만 그냥 하는 거지 하는 맘으로 꾸역꾸역 버티는 중이다.





1차 프로젝트 발표

띵호와

월요일은 HTML과 CSS만으로 만들었던 프로젝트를 발표했던 날이었다. 발표는 팀원이 맡아서 해줬는데, 사실 금요일에 개발만 끝내고 발표자를 안 정하고 가서 마음 한켠에 찝찝함이 계속 남아있었다. 슬랙으로 발표자를 정하자고 얘기했는데 나는 사다리 타자고 했는데 채연 님이 자기가 한다고 해서 약간의 민망함 + 감사함이 몰려왔다.
내가 앞에서 리드미를 스크롤 + 시연을 맡았고 채연 님이 발표를 했는데, 많이 떨려하시는 것 같았다. 발표 전에 우리 프로젝트가 BGM을 사용하는데 크롬은 BGM을 자동 재생하려면 설정을 해야 해서 우리 노트북을 들고 가서 HDMI를 꽂았는데 이게 매끄럽게 안 돼서 발표하는 채연 님이 당황하지 않았을까 싶기도 하다. 그래도 내용이 너무 알차고 주제가 재미있어서 반응이 좋았고 뿌듯했다.

피드백


이렇게 프로젝트 발표하고 피드백받는 것도 처음인지라, 모든 팀에 다 작성해 주신 새봄 님이지만 너무 감사했다. 나도 삘 타서 여기저기 남겨야겠다고 생각했다. 사실 채연 님이 발표 직전에 라이트하우스를 개선하기 위한 부분을 되게 잘 적어오셔서 리드미에 넣었고 발표에 넣었지만 설마 기억이나 할까 했는데 이렇게 피드백에 남겨주시니 더 열심히 해야겠다는 결심이 들었다.

웰컴키트

아쉽게도 사진은 없다. 필자의 아이폰 카메라는 없어도 될 정도로 사진을 찍지 않기 때문... 글을 적고는 있지만 이걸로 없던 감성이 생길 것 같진 않다.
웰컴 키트는 수강이 확정된 후에 지급되는 절차로 보였다. 구성품은 노트북 거치대, 멀티 허브, 텀블러, 우리 그룹 인형?, 도킹형 보조배터리 정도 있었던 것 같은데 난 다 가지고 있던 것들이라 새걸로 남기기로 했다, 기념으로.
다 우리 FISA가 각인되어 있고 퀄리티가 좋은 것 같았다. 인형이 여러 종류인데 다들 인형에 진심이더라. 뭐 뽑았네 자랑하던데 난 목도리한 곰돌이 같은 거 뽑았는데 락커로 직행시켰다.

점심 시간



내가 하루를 버티는 원동력


나의 최애 식당은 JTBC 사옥 내 구내식당이다. 단돈 6,500원에 자율 배식으로 한 끼를 배불리 먹을 수 있다. (심지어 맛있음) 단점은 좀 멀다, 10분 정도 걸어가야 함.

우리 반은 1차 프로젝트 때 옆 조가 만든 랜덤 점심식사 조 뽑기를 활용해서 랜덤으로 식사조를 짜주시는데 가끔 JTBC 구내식당을 가자고 말 꺼내기 힘들 때가 있다. 난 먹는 거에 돈을 아끼는 편이 아니다. 하지만, 쓰는 만큼 맛이나 퀄리티가 비례해야 통하는 이치지. 이 근처 식당은 솔직히 가격은 너무 비싼데 음식은 그냥 평범한 것 같다.

JTBC보다 맛있는 식당은 지금까지 이 마이클 돈까스밖에 없었다.
처음엔 JTBC가 너무 멀어서 얘기 잘 안 꺼내다가 한 번씩 얘기해서 같이 가게 됐는데 다들 너무 맛있다고 해줘서 마치 내가 음식을 차린 것처럼 기분이 좋았다.



JS

이번 주차의 학습 내용은 자바스크립트였다. 공부한 내용은 포스트를 분리해서 자세히 기록할 예정이다. 나는 귀찮아서 자스라고 부르는데 다들 어떻게 부르시는지 궁금하다.

나는 자바스크립트를 현장실습 때 정말 많이 사용했다. 그런데 이번에 학습하면서 놀란 건 내가 이런 것도 모르고 일을 했다니, 심지어 그 코드가 돌아갔다니, 이런 생각이 정말 많이 들었다.
예를 들면 Promise가 뭔지, package.json은 어떤 역할을 하고 script에 추가하면 npm run *** 이런 식으로 동작하는 것도 몰랐다.

또 script를 HTML에서 사용할 때 defer 태그를 사용하는 거라든지, ID와 클래스의 차이와 각각을 어떻게 엘리먼트를 가져오는지, 브라우저와 노드 서버에서의 동작 과정에서 어떤 함수를 사용할 수 있는지, 이런 걸 아무것도 몰랐다. 진짜... 그래서 더 신기했고 열심히 들으려고 노력했다. 다만 점심 식사 이후 졸음은 이겨낼 수 없었다 ㅜ


맛있게 밥을 먹고 수업을 듣는 나




2차 프로젝트

2-1 프로젝트 목표

2차 프로젝트는 1차 프로젝트에 JS를 이용해 동적인 기능을 추가하는 것이었다. 사실 우리 프로젝트는 1차 때 이후 디벨롭할 게 많이 없었다. 해봤자 JS로 철가방 내에서 위치를 랜덤으로 나오게 하고 이미지를 랜덤으로 등장시키는 작업 정도였다. 그런데 이런 건 1시간이면 다 하지 싶어서 기획 단계에서 게임 로직을 변경하기로 했다.

이때도 참 여러 가지 고민이 있었는데, 나는 기술적으로 좀 고민할 수 있는 부분을 추가하고 싶었다. 그래서 강사님께 도움을 청했고, 처음엔 구현을 빠르게 완료하고 NPM으로 라이브러리화해서 배포를 해보라고 하셨다. 이런 신박한 아이디어가 너무 솔깃했지만 이후에 말씀하신 순발력 위주의 게임 아이디어로 방향을 결정했다.




2-2 프로젝트 변경사항

우선 아이디어가 크게 변경됐다. 원래는 철가방 뚜껑 안에 사물을 빨리 캐치해서 정답을 키보드로 입력하는 방식이었지만, 강사님께서 피드백 주신 키보드보다는 마우스를 활용하는 방향으로 변경했다.

그래서, 우리 게임이 뭐냐? 철가방이 위에서 내려오는 동안 오직 짜장면만 클릭하는 게임이다. 지금은 좀 어설프지만 짜장면 말고 짬뽕이 나온다거나, 짜장면이 여러 개 나오는데 막 뒤집혀 있다거나 하는 함정 속에서도 짜장면만 클릭하면 되는 간단한 게임이다.
요약하면 철가방이 빠르게 내려오는 상황에서 정확하게 짜장면만 클릭해야 하는 게임이고, 클릭한 개수를 랭킹으로 보여주는 게임이다.




2-3 개발

우리는 기획할 때 DB를 사용하기로 했었다. 공교롭게도 우리 팀은 2백 1프런트라고 보면 될 것 같은데, 프런트인 채연 님에게 일부러 백엔드를 맡겼다. 사실 컬럼 두 개뿐인 테이블에 저장과 조회 정도만 하면 되는 간단한 기능이지만, 아무런 경험도 없이 스스로 하는 건 쉽지만은 않다고 생각했다. 그리고 JS 작업은 나와 소연 님이 맡아서 진행했다. 나는 게임 플레이 로직을 담당했고, 소연 님이 프로그래스바와 결과 모달, 유저 이름 입력창 기능을 맡았다.

내가 담당한 부분은 다음과 같다:

철가방 내 이미지 랜덤으로 위치시키기
게임 종류 랜덤으로 결정
(짜장면만 나오는 게임, 짜장면과 짬뽕이 동시에 등장하는 게임, 아무 이미지도 안 나오는 게임)
추가: 한 번 이미지가 등장할 때마다 철가방이 내려오는 CSS 애니메이션 재호출하기
이미지 클릭 시 정답 및 오답 처리
총 점수와 유저 이름을 Fetch API를 사용해 서버로 전송




2-4 어려웠던 점

애니메이션 재호출

가장 어려웠던 건 애니메이션을 재호출하는 것이었다. 이게 애초에 가능한지도 몰랐고, GPT나 웹 서핑을 통해 참고해 구현을 시도했는데 철가방이 꿈쩍도 안 하더라. 채연 님이 해결해주셨는데, 주요 문제는 엘리먼트의 classList에서 이벤트를 제거하고 다시 등록했더니 동작하지 않았다. 대신 엘리먼트의 style.event를 사용해 이벤트를 제거하고 다시 등록하는 방법으로 해결했다. 그 늦은 시간에 어떻게 알아내셨는지 진짜 대단하다.

Promise 처리

이미지가 등장하고 철가방이 닫히면 그 문제는 오답 처리가 되어야 했다. 그런데 비동기적으로 코드를 구성하는 게 아직 낯설어서 어려웠다. Promise를 사용해 Promise.race로 정답, 오답, 시간 초과(이 경우도 오답) 세 가지 중 먼저 Resolve되는 쪽만 처리하도록 했다. 내가 어려웠던 건 Promise가 중첩될 줄 알았는데, 사실 그렇지 않다는 점이었다.

DB 연결

우리는 FISA에서 제공해주는 랜선을 사용해 작업했다. 하나 배운 점은 같은 랜선에 연결되어 있으면 로컬 서버에 팀원이 내 IP를 통해 접속할 수 있다는 점이었다. 이게 중요했던 이유는, 팀원이 같은 DB를 바라보며 작업하는 게 좋았기 때문이다.
하지만 MySQL은 기본적으로 외부 접속을 차단하는 방화벽이 설정되어 있었다. 이를 해결하려면 bind-address를 0.0.0.0으로 설정하고 3306 포트의 방화벽을 해제해야 했다. 이 과정을 강사님 도움으로 해결할 수 있었다.





2-5 끝나지 않는 구현

우리가 너무 욕심을 냈던 걸까, 아니면 너무 느긋했던 걸까. 우리는 정규일과가 끝나고도 강의실에 남아 개발을 이어갔다. 이때까지만 해도 발표가 가능할까 싶었지만, 나는 우리 팀이 너무 침울해질까 봐 “할 수 있다”고 계속 다짐했다.
FISA 강의실이 밤 9시에 문을 닫아서 각자 집으로 돌아가 작업을 이어가기로 했다. 셋 다 눈이 빨갛게 충혈되어 있었지만, 신기하게도 집에 도착해서도 작업을 계속했다.




2-6 발표

발표는 내가 진행했다. 준비 시간이 거의 없었지만, 구현이 얼추 완성된 것에 만족하며 발표를 프리스타일로 진행했다.
발표 흐름:

  • ESLint Rule 소개
  • JS로 추가한 기능 설명
  • 프로젝트 소개
  • 시연

최대한 재밌고 가볍게 진행하려고 노력했다. 마지막에는 피드백을 요청하면서 발표를 마쳤는데, 생각보다 많은 피드백을 받아 기뻤다.




2-7. 피드백

옆자리인 원빈님과 지윤님이 피드백을 남겨주셨다. 재밌었던건 게임발표를 하고 한비님과 원빈님 둘이서 엄청 게임을 열심히 해주셨다 ㅋㅋ 랭킹에 둘이름만 가득해서 감사했다. 사실 우리팀이 좀 되게 단순하다고 생각이 드는데 다들 따듯하게 칭찬해주시고 이런문화가 낯설지만 너무 좋은것같다. 나도 그래서 열심히 피드백을 달고 다녔다!



슬랙팀에 아이유가 응원해주는 기능이 있길래 써보고 리뷰를 달았다 ㅋㅋㅋ 바로 앞자리 팀이여서 재밌게 남기고 싶었다~





1차 기술세미나 조 편성

주제선정방식은 강사님 추천 주제, 심사위원님 추천 주제, 각자 해보고싶은 주제를 적는 칸 들을 참고해서 각자 조를 짜는 방식이였다. 난 이전에 현장실습때 vue.js를 활용하는 프로젝트에서 특정 엘리먼트만 다시 랜더링해야하는 상황이 있었는데 이때 이사님이 vue 라우팅을 사용하라고 했던게 생각이나서 react의 동적라우팅 정적라우팅을 해볼까했다.




팀원구성

난 영재와 승현이형이랑 같이 팀을 하게됐다. 솔직히 내 주제가 인기없을걸 알아서 버리고 어디들어갈지 고민했는데 영재가 화장실에서 먼저 같이 하자고 해줘서 너무 고맙게도 같이 팀을 하게 됐다.




착각

아직도 헷갈리지만 react의 동적 라우팅, 정적라우팅이 우리는 네트워크적인 개념이 들어가서 백과 프런트에 융합적인 발표주제라고 생각했다. 하지만 찾아보니 react의 라우팅은 어플리케이션 레벨에서 url과 컴포넌트만 매칭시켜주는 방식이라 발표할 내용이 우리의 취지와 맞지않다고 느꼈다. 그래서 우리는 모여서 얘기를 했고 심사위원님이 정해주신 주제들을 주말동안 조사해서 월요일에 결정을 하기로했다.

이번주 잘한 점

알고있는 내용이라도 최대한 집중하려고 노력했고, 강사님께서 질문했을 때 잘 모르지만 그냥 일단 질렀다. 집에서 요새 그런 명언같은걸 자꾸 인스타로 접하게되는데, 이런거 극혐했는데 요새 좀 공감가는게 많다. 예를들면 너무 고민이 많으면 용기가 사라진다. 펜싱 경기 해설위원이 했던말인데 나의 상황에 딱 떨어지는느낌. 아무튼 그래서 너무 고민하지않고 그냥 대답해버렸다.

실습코드들을 깃허브 레포지토리로 관리했다. 하나하나 지나가기보단 기록들로 보관하고 또 나만의 코드들을 유지하려고 노력했다. 강사님이 예제를 주시고 정답을 주지만 내가 푼 코드와 주석을 킵하고싶었다. 이게 편리하고 깔끔하니까 더 열심히 하게 되는 느낌.

추가로 알려주는 내용에 끝나지않고 계속해서 왜?라는 고민을 했다.
수업중에 생각나는 고민들을 하나씩 적어보았고 쉬는시간이나 자투리시간에 검색하기도하고 질문하기도했다.
난 나에게 필요한 자세가 매일 한발짝씩 더나가보는거라고 생각하고 그건 누가 시켜서 되는게 아니라서 계속 뭔가 해보려고 시도중이다.






나는 매일 아침 런닝을 뛰고있다. 자취방이 가까우면서 갖게된 장점인데 6시40분쯤 기상하면 런닝과 아침식사를 모두 챙길수있다. 건강하고 오래 지속하는 사람이 되고싶어 그런사람의 루틴을 많이 찾아보곤하는데 공통점은 끼니,휴식,운동이였다. 특히 운동하는게 퇴근후엔 너무 힘들다. 차라리 아침에 일어나서 조금뛰면서 잠도 깨는게 좋겠다 싶어서 시도했는데 매일 아침 너무 상쾌하고 뿌듯하다.





이번주 아쉬웠던 점

나는 주단위로 주말에 회고록이나 블로그를 작성한다. 이 방식은 일부러 내가 계획한 방식인데, 글솜씨도 없고 블로그 작성 시간이 길어서 차라리 평일엔 수업과 당일 배운 학습을 리뷰하는데 집중하고 알고리즘을 한문제를 더 풀자 그리고 주단위로 추가 복습을 진행하자가 내 취지였다만,,, 그날에 뭐했는지 기록은 조금 해야할것같다. 주말이되어 글을쓰는데 가물가물한게 기록이 필요하다고 느꼈다.

알고리즘을 매일 풀어야하는데, 이게 맘처럼 잘 안된다. 다음주는 아니 당장 오늘부터 꼭 풀도록 할것이다.




느낀 점

난 지금 내가 놓인 환경이 너무 만족스럽다. 원랜 상당히 예민한 사람이였지만 그럴수록 내가 뭔가에 집중하기는 어렵다는걸 느꼈다. 그래서 좀 내려놓고, 무던하게 작은 목표를 매일 매일 이뤄나가는 루틴을 취하고있다.
뜨거운 열정보단 지속적인 열정을

profile
들은것은 잊어버린다 본것은 기억된다 해본것은 내것이 된다

0개의 댓글