| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- vacuum
- 게임잼
- 한글깨짐
- 회고
- 머신러닝 #의사결정트리 #GINI
- 3D모델링
- 디지털대장간
- 메이커스페이스
- 한성대학교
- 게임개요서 #공모전 #게임기획
- HTML5
- 한글오류
- 진공성형기
- egret
- 시민창작단
- 레진아트
- 소켓
- 아트토이
- N15
- 상상랩
- 게임개발
- 그래픽
- 카드캡터사쿠라
- TypeScript
- 메이커
- 버그리포트 #유니티
- 카드캡터체리
- 진공성형
- 한국과학창의재단
- 디버깅
- Today
- Total
당신에게 꽃을
2020년 0년차 회고록 본문
안녕하세요, 지안입니다.
2020년은 다사다난한 한 해였는데 요, 코로나 19 팬데믹 와중에도 많은 도움을 주셨던 주변인 분들께 감사했고, 더불어 이 글을 봐주시는 모든 분들께 작년 한 해 고생 많으셨다는 말씀 먼저 드립니다.
2020년에 좋은 기회가 있어 개발자로 취업을 하게 되어, 짧게나마 0년 차 회고록을 남깁니다.
작년 한 해 제 타임라인은 다음과 같습니다.
- 1-2분기: 본과 4학년 1학기 재학, 졸업작품 마무리, 비전공자분들과 함께 HTML/JS/CSS 스터디 프로젝트 진행
- 3분기: 취업 준비 및 면접 진행, 웹에이전시에서 웹프론트엔드 개발자로 단기 근무
- 4분기: HTML5 웹게임 클라이언트 개발자로 근무
회사 업무를 제외한 주요 진행 프로젝트는 다음과 같습니다.
- Intelligent UI Assistant 리엔지니어링 (AWS EC2, Firebase storage, JS, TensorFlow 1.5 Keras): 졸업작품입니다. 영상처리/딥러닝을 통해 하나의 레이어로 합쳐진 이미지에서 개별 UI 컴포넌트들을 분리하는 웹 애플리케이션입니다.
- Team Cook (HTML, JS, CSS, Firebase realtime DB): 자취생에게 유용한 간단한 요리 레시피 추천 사이트입니다. HTML/CSS로 간단한 웹페이지 구축을 하고 JS와 firebase를 이용해 레시피 데이터를 불러와 웹페이지에 뿌려주었습니다.
- Unity Vuforia 스터디: AR 증강현실을 이용한 간단한 어플리케이션 제작을 했습니다. AR 오브젝트를 터치하면 상호작용을 하는 등의 기능을 포함하고 있습니다.
2020년에는 졸업작품 마무리와 취업 준비가 겹쳐 신규 프로젝트를 많이 진행하지 못하여 아쉬웠습니다. 그래도 기억에 남는 몇 가지에 대해 기록을 남겨봅니다.
IUA(Intelligent UI Assistant
IUA(Intelligent UI Assistant)는 2019년 말에 초기 버전 제작을 했었습니다. 그러나 이 버전에서는 가장 중요한 딥러닝 모델이 동작하지 않았습니다...() 당시 사용했던 모델은 CUDA를 설치해야 동작이 가능했는데, 파이썬 버전 충돌 문제 등으로 팀원 세 명 모두가 환경 구축에 애를 먹는 와중에 1차 심사가 다가왔습니다. 딥러닝 모델은 실행도 못 해본 상태였고 결국 모델 없이 웹페이지만 제출했던 기억이 납니다...()
그리고 알맹이 없던 이 프로젝트를 2020년에 재제작했습니다. 작업용 하드웨어를 바꾸고 나니 환경 구축 문제도 해결이 되어서 별 다른 문제 없이 제작이 가능할 줄 알았는데요, 팀원 중 한 분이 개인 사정으로 중도 휴학을 하시면서 문제가 생겼습니다. 데이터 라벨링 일손이 부족해졌어요. 웹페이지 구축, 서버 개발 및 연결은 제가 맡고, 딥러닝 모델 제작과 데이터 라벨링은 남은 학우님께서 맡아주셨습니다. 그래도 최종 심사일까지 일정이 촉박해서 서버는 파이썬 소켓, DB는 firebase, 호스팅은 AWS EC2를 사용한 혼종이 탄생했던... 프로젝트였습니다. 학습에 사용한 이미지 데이터도 30-40개 정도로 매우 적었습니다. 그래도 생각보다 모델 학습 결과가 좋아서 놀랐던 프로젝트였습니다. (주요 기능도 다 제대로 동작은 했다는 게 놀라웠습니다.) 모델 제작에 힘써주신 학우님께 감사의 말씀 올립니다 :D
Team Cook
Team Cook 프로젝트는 좋은 스터디 경험이 되었는데요, 이 프로젝트는 비전공자 세 분과 한 팀을 이루어 약 한 달 정도의 기간 동안 진행했습니다. 팀원 분들께 'DB에서 값을 불러와 웹페이지에 뿌려준다'는 개념과 그 방법을 설명드리는 것이 난이도가 있었습니다. 처음에는 공식 문서와 예제 링크를 참고 자료로 사용하였는데, 저희가 만들던 프로젝트와는 구조가 상이하다 보니 이해에 난해한 부분이 있었습니다. 추후에 저희 프로젝트 구조에 맞는 예제 코드와 주석을 작성해서 드리는 방식으로 문제를 해결했습니다.
이 프로젝트는 목적상 DB를 붙이거나 호스팅을 할 필요까지는 없었는데, 아무래도 제가 욕심이 있어 DB에서 데이터 값을 불러오자고 제안을 했습니다. 다행히 팀원분들이 흔쾌히 승낙을 해 주시고 프로젝트 마무리까지 힘써 주셔서 서로에게 좋은 결과로 남았던 것 같습니다.
여담으로 해당 프로젝트를 AWS에 올리고 나서 특정 사진 하나가 출력이 안 되는 문제가 있었는데, 해당 리소스 파일의 확장자명이 .JPG로 대문자였습니다... 기본 사진 확장자인 jpg와 png 외의 파일을 AWS 서버에 올리려면 따로 설정을 해 줘야 한다는 사실을 알게 되었습니다.
2020년 한 해 맡았던 주요 업무는 다음과 같습니다.
- 음악 라이브러리 웹사이트 개발 및 유지보수 (D3.js, Mongoose, Angular.js, NodeJS): 약 11만여 개 음원을 보유하고 있는 음원 서치 웹사이트 프로젝트에 투입됐습니다. 각 음원이 가진 무드 태그에 따라 D3 그래프를 생성하여 유저에게 시각화된 자료를 제공하는 기능을 주력으로 개발했습니다. 그 외 음원 검색 기능 수정 및 개선 등의 기타 유지보수를 맡았습니다. (약 한 달)
- BubbleCoCo HTML5 포팅 개발 및 유지보수 (TS, Egret, fairy GUI): 2019년 말 어도비 플래시 지원 종료로 인해 기존 플래시 게임을 HTML5 게임으로 전환하는 포팅 작업을 진행했습니다. 클라이언트 개발을 맡았습니다.
- 프로젝트 코드 리팩토링: 사내에서 제가 작성했던 코드에 대한 리팩토링을 진행했습니다. (진행했으나, 아직도 많은 code smell이 남아있어 아쉽지만, 그래도 진행에 의의를 둡니다...)
- HTML5 웹게임 광고 추가 작업: 주로 인터스티셜 광고 기능 추가 작업을 진행했습니다.
새로 배운 기술에는
Angular.js / NodeJS / TypeScript / Egret Engine / FairyGUI / Unity (Vuforia 위주) / GCP 등이 있습니다.
기억에 남는 장애와 대응으로는
- CSS filter 브라우저 호환성: png 파일에 필터를 씌워 색과 투명도 처리를 변경해야 하는 기능이 있었는데... 해당 기능에 CSS 필터나 mix-blend-mode를 적용하였을 때 브라우저마다 색이 달라 보이거나, 익스플로러의 경우 해당 태그를 아예 지원하지 않는 경우가 있었습니다. (해결 못 했습니다ㅎ)
- 로컬라이징 언어 디폴트 설정: 해당 서비스는 접속 시에 서버에서 접속 국가 정보를 받아와서 뷰를 생성 시에 로컬라이징을 하는 기능이 있었습니다. 영어 외 3종 언어를 지원하고 있었는데, 실제 라이브 서비스를 가보니 서버에서 해당 4종 외 언어를 날리는 경우가 있었고, 해당 경우에 대한 예외처리가 없어서 유저들이 서비스에 접속 자체를 못 하는 사태가 발생했습니다. 클라이언트 코드에 특정 세션마다 빅쿼리로 로그 메시지를 심었고, 로딩->스타트 세션에서 데이터가 튀는 것을 확인하여 해당 부분에서 일어나는 코드를 추적해 로컬라이징 문제임을 발견하고, 예외처리를 추가하여 픽스하였습니다.
그 외에도 자잘한 실수를 많이 했는데, 배운 점은
1. 코드는 되도록 방어적으로, 예외처리를 잘해 둘 것
2. 코드 컨벤션을 준수할 것: 저는 프로젝트 진행 중에 투입된 인력이었는데, 이미 기존에 짜인 프로젝트의 코딩 스타일을 따라서 코드를 작성하고 있었기에 코드 컨벤션을 준수했을 때의 장점에 대한 체감이 거의 없었습니다. 그러나 추후에 CTO님께 코드 리뷰를 받으면서 스타일을 준수하지 않았을 시에 엉망이 되는 프로젝트들에 대한 이야기를 듣게 되었고 (제가 받은 프로젝트가 그랬습니다...) 아키텍처나 스타일에 일관성이 없을 때, 유지보수 시에 많은 비용이 낭비된다는 사실을... 이슈 처리하면서 체감하게 되었습니다. 특히 전임자가 직렬로 여려명이었는데 전부 퇴사한 상태고, 코드와 아키텍처 스타일이 다 다른 프로젝트를 상반기에 맡았었는데 이땐 정말 기능 하나 찾아서 고치기 힘들었던 기억이 납니다. 모쪼록 기본기란 일관성 있게 정리를 잘하는 것이라고 깨달았습니다.
글을 마무리하면서
사실 2019년에 비하면 2020년은 진행한 프로젝트도 적고, 대회도 하나밖에 나가지 않아 '좀 더 노력할 걸'이라는 아쉬움이 많이 남았습니다. 그래도 현업에서 나름대로 가치 창출(?) 할 수 있었다는 점, 코드 리뷰를 가장 많이 받은 한 해였다는 점이 유의미한 것 같습니다. 항상 물어본 것에 대해 친절히 알려주시는 업계 선배님, 동료님들께 감사하는 바입니다.
어찌어찌 웹개발을 하다가 현재는 웹게임 클라이언트 개발자라는 다소 특수한 포지션에서 일을 맡고 있습니다. 웹, 게임 양 쪽 개발 지식을 모두 알아야 하는 만큼 2021년엔 더욱 정진해야겠다는 생각이 듭니다.
이상 긴 글 읽어주셔서 감사합니다.
같이 발전하는 2021년이 되었으면 합니다 :)
이만 줄이겠습니다!