토이 프로젝트 주제 | 토이프로젝트를 아직도 안하고 있으시다구요? 그라믄~안돼~!! 96 개의 정답

당신은 주제를 찾고 있습니까 “토이 프로젝트 주제 – 토이프로젝트를 아직도 안하고 있으시다구요? 그라믄~안돼~!!“? 다음 카테고리의 웹사이트 https://you.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://you.maxfit.vn/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 성지채널 이(가) 작성한 기사에는 조회수 1,574회 및 좋아요 21개 개의 좋아요가 있습니다.

토이 프로젝트 주제 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 토이프로젝트를 아직도 안하고 있으시다구요? 그라믄~안돼~!! – 토이 프로젝트 주제 주제에 대한 세부정보를 참조하세요

안녕하세요? IT 알려주는 은행원입니다 🙂
제가 IT 일을 한지 벌써 4~5년이 다 되어가네요.
그러면서 제가 경험했던 토이프로젝트에 대해 말씀을 드리려 합니다.
재밌게 봐주시고 구독과 좋아요 부탁드립니다 🙂

토이 프로젝트 주제 주제에 대한 자세한 내용은 여기를 참조하세요.

개발자 토이프로젝트 모아보기 서비스: DevFoliOh!

다른 개발자들은 어떤 포트폴리오를 만들었을까? 개발자들의 포트폴리오 혹은 토이 프로젝트를 한눈에 모아보세요.

+ 여기를 클릭

Source: devfolio.kr

Date Published: 1/23/2022

View: 5402

토이 프로젝트를 하면서 겪은 8가지 실수 – 마이구미

이 글은 토이 프로젝트 배포를 앞두고 그 과정중 느꼈던 것들을 회고한다. 글로 남기고 싶은 기술적인 내용도 많은 주제가 쌓여있다.

+ 자세한 내용은 여기를 클릭하십시오

Source: mygumi.tistory.com

Date Published: 8/24/2022

View: 1928

프로젝트가 장난이야?! | 우아한형제들 기술블로그

저는 개발자의 개인 장난(감)인 프로젝트인 토이 프로젝트에 대해서 이야기해보려고 합니다. 저는 웹 개발 입문과 거의 동시에 토이 프로젝트를 시작 …

+ 더 읽기

Source: techblog.woowahan.com

Date Published: 4/19/2021

View: 6729

어떤 프로젝트를 진행하면 좋을까? 토이 프로젝트 주제 찾기

토이 프로젝트 주제 찾기. 이진2 2019. 4. 26. 16:01. 토이 프로젝트를 해보자! … 소프트웨어 엔지니어의 역량 강화를 위한 사이드 프로젝트의 기본 방향을 추천해준 …

+ 여기에 자세히 보기

Source: 2jinishappy.tistory.com

Date Published: 8/9/2021

View: 6042

[토이프로젝트] 1편 : 간단한 게시판 만들기

안녕하세요? 정리하는 개발자 워니즈입니다. 이번시간에는 간단한 토이프로젝트 만들어보기라는 주제로 글을 연재해볼까 합니다. 필자가 속한 부서에서 …

+ 여기에 표시

Source: blog.wonizz.tk

Date Published: 9/19/2021

View: 4232

토이프로젝트를 시작하는 방법 – 코딩의 성지

먼저 서비스의 경우는 생각할게 많다. 서비스의 주제를 명확하게 정하고, 거기에 필요한 기능, 그리고 사용할 언어와 기술등의 스펙, 프로젝트 규모, 일정 …

+ 여기에 표시

Source: devkingdom.tistory.com

Date Published: 9/4/2022

View: 5170

1년 동안 개발자 2명이 만든 토이프로젝트 맛보기 [1편]

Moobe (Map of Youtube) – 1년 여간의 토이프로젝트 작업 결과물 (맛집 검색은 무브!) 대충 감이 오시나요??? 저희가 1년 동안 토이프로젝트로 개발한 …

+ 여기에 더 보기

Source: brocess.tistory.com

Date Published: 6/20/2021

View: 9890

1. 무엇을 만들 것인가? – ITcoin

여기서 좀더 발전시켜서 주제별(Node, Spring, 알고리즘), 비주제로 코딩 … 4) 개발자 스킬체크: 토이프로젝트는 다른 개발자들이 흥미를 끌만한 …

+ 여기를 클릭

Source: itcoin.tistory.com

Date Published: 11/12/2021

View: 3964

주제와 관련된 이미지 토이 프로젝트 주제

주제와 관련된 더 많은 사진을 참조하십시오 토이프로젝트를 아직도 안하고 있으시다구요? 그라믄~안돼~!!. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

토이프로젝트를 아직도 안하고 있으시다구요? 그라믄~안돼~!!
토이프로젝트를 아직도 안하고 있으시다구요? 그라믄~안돼~!!

주제에 대한 기사 평가 토이 프로젝트 주제

  • Author: 성지채널
  • Views: 조회수 1,574회
  • Likes: 좋아요 21개
  • Date Published: 2021. 4. 7.
  • Video Url link: https://www.youtube.com/watch?v=bZz6kFzXGwg

토이 프로젝트를 하면서 겪은 8가지 실수 :: 마이구미

반응형

이 글은 토이 프로젝트 배포를 앞두고 그 과정중 느꼈던 것들을 회고한다.

글로 남기고 싶은 기술적인 내용도 많은 주제가 쌓여있다.

그리고 배포를 하고 운영하면서 많은 것들을 경험하는 것들도 포스팅 주제가 될 것이다.

이건 추후로 미루도록 하고…

여기서는 기술적인 내용보다는 본인의 경험으로 누군가 토이 프로젝트를 보다 효율적으로 하는 바램과 다음에는 똑같은 실수를 하지 않기 위해 히스토리를 남기는 목적이다.

전체적은 글은 본인이 겪은 8가지의 실수를 중심으로 이야기를 이어간다.

이 모든건 개인 경험과 기준이라는 것을 인지하길 바란다.

– 첫번째 실수 – 정해졌으니 이제는 만들면 돼!

– 두번째 실수 – 최신 기술로 만들어야해!

– 세번째 실수 – 디자인 어떻게 하지?

– 네번째 실수 – 재미로 같이 만들어요!

– 다섯번째 실수 – 일단 개발하면서 필요한 페이지들을 추가하자!

– 여섯번째 실수 – 이미지 리사이징 서버는 필수지!

– 일곱번째 실수 – 사용자 고려를 하지 않은 개발자 마인드

– 여덟번째 실수 – 잘 나가는 쿠팡, 네이버, 카카오, 당근마켓 서비스를 참고하자!

토이 프로젝트를 시작한 계기

우선 본인은 IT 업계에서 5년정도 일하고 있는 프론트 개발자이다.

개발자라면 누구나 회사 업무가 아닌 그럴싸한 토이 프로젝트를 꿈꾼다.

본인도 신입으로 일하는 시절부터 토이 프로젝트를 다짐하곤했다.

토이 프로젝트를 하려면 무엇이 필요할까?

당연히 무엇을 만들고 싶은지를 정해야한다.

본인은 똑똑한 사람이 아니라… 항상 똑똑해지고 싶었다.

그래서 알고리즘이나 창의력 문제 같은 것을 자주 풀곤 했다.

하지만 특히 창의력 문제의 경우에는 성냥, 바둑판, 바둑알, 동전 등 뭔가 준비물이 필요했다.

그래서 이걸 웹이나 앱으로 PC 나 모바일에서 풀면 좋겠다는 생각으로 시작했다.

(이게 5년전이다. 지금은 5년이 지났다…)

첫번째 실수 – 정해졌으니 이제는 만들면 돼!

무엇을 만들고 싶은지 정해졌지만, 여러 이유로 쉽게 시작하지 못했다.

그러다가 신입 4개월이 지날무렵, 어느정도 적응을 해서 프로젝트를 시작하게 되었다.

하지만 블로그도 시작하고 알고리즘 문제도 풀고 업무도 해야하고 하고 싶은 게 굉장히 많았다.

그렇게 우선순위를 높게 잡지 않은 탓에 하는둥 마는둥 하게 되었다.

자연스럽게 토이 프로젝트는 잊혀져갔다.

무엇을 만들지는 정했지만 다른 것들은 전혀 준비가 되지 않았다.

두번째 실수 – 최신 기술로 만들어야해!

또 몇개월 시간이 흘러, 다시 시작하겠다는 마음을 먹었다.

이때 당시는 한창 jQuery 를 쓰고 있었을 시절이다.(React.js 존재하긴 했으나, 지금처럼 대중화되지 않음)

개발자라면 언어, 라이브러리, 프레임워크 등을 선택하는 고민을 할 것이다.

당시 본인은 부끄럽지만 처음에 이렇게 했다.

“jQuery 는 어차피 자바스크립트 껍데기잖아. 난 바닐라 자바스크립트로 구현할거야”

실제 업무가 크로스 브라우저 지원이 중요한 서비스였음에도, 저런 귀여운 생각을 하곤했다.

jQuery 사용하지 않고 토이 프로젝트를 시작했다.

그렇게 개발을 하다가 템플릿 관련 작업에 많이 사용중이라는 얘기를 듣었다.

“요즘에 많이 사용하는 Handlebars.js 를 도입해서 템플릿 관련 작업을 쉽게 하면 좋을거야”

handlebars.js 도입하게 되었다.

기존 로직의 리팩토링으로 시간을 소모하게 된다

그리고 또… 자연스럽게 첫번째 실수를 반복한다.

그러다가 다시 시작하겠다고 마음을 먹었다.

이 당시에는 Vue.js 를 사용하고 있었다.

“핫한 Vue.js 로 작업하면 공부에도 좋고 더 효율적일거야”

그렇다. 당연히 모든 코드를 Vue.js 로 다시 작업했다.

첫번째 실수를 또 몇번 거치다가… 프레임워크에 대한 고민이 시작되었다.

이미 React 는 대중화되었고, Vue.js 에 대한 관심이 시들시들해지는 상황이었다.

“Vue.js 보다 React 에 익숙한게 커리어에 나을거야”

그래서 React 를 공부하였고, 다시 React 로 작업했다.

결국 계속 프로토타입만 찍어내면서, 쳇바퀴 돌듯 같은 실수를 반복했다.

그리고 사실 무엇을 만들고 싶다라는 생각보다는 오로지 개발자 역량을 위해 했던 것 같다.

이게 이해 안가는 행동일 수도 있으나… 드문 이야기는 아니다.

본인도 그랬고, 최신 기술을 추구하는 사람은 의외로 꽤 많다.

이렇게 아마 작년까지 반복했던 것 같다.

그리고 작년 11월에 진심으로 프로젝트를 집중하게 되었다.

세번째 실수 – 디자인 어떻게 하지?

프로젝트를 시작하면서, 계속 발목을 잡았던 건 디자인이다.

부트스트랩 같은 라이브러리는 사용하지 않았기에, 개발 초기에는 항상 이쁘지 않은 페이지들을 봐야했다.

그게 마음에 들지 않아, 구글링이나 다른 앱들을 보면서 그때그때 조금씩 디자인을 입혀나갔다.

이것이 엄청난 시간을 낭비했다.

기능 좀 구현하다가 디자인 입히고 이 과정을 반복했고, 디자인을 입혀도 시간이 지나 더 괜찮은 UI 가 있으면 바로 교체했다.

너무나 비효율적인 모습을 보고, 지인 분들 중에 디자인을 해주실 디자이너분을 찾아보게 되었다.

네번째 실수 – 재미로 같이 만들어요!

만들고 싶은 것을 만들고 있었고, 다른 측면에서 어느정도 계획은 있었지만 구체적인 계획은 없었다.

재미로 만드는 건데 디자인 도와주실 수 있는지를 요청한다는 것 자체가 사실 욕심이었다.

아무리 잘 설명하고, 그런 의도가 아니었어도 듣는 입장에서는 결국 똑같이 들릴 것이다.

제가 이렇게 개발하고 있는데 개발자라서 디자인을 못하니까 이것 좀 해줄 수 있어요?

너무나 상대방에 대한 실수이고, 본인의 욕심이었다.

누군가에게 도움을 요청을 하려면 제대로된 계획이 뒷받침되어야한다.

단순 본인의 욕심이 강하다고 느껴진다면, 스스로 배우자.

그래서 본인은 직접 디자인 툴을 공부하기 시작했다.

원하는 아이콘과 이미지를 만들고 로고를 만들었다.

그렇게 만들어진 것들 중 하나가 지금의 로고다!

원하는 아이콘, 이미지 그리고 플레이스토어 등록에 어차피 필요한 일이었다.

진작 디자인을 조금이라도 다룰 수 있었으면 모든게 달라졌을 것이다.

다섯번째 실수 – 일단 개발하면서 필요한 페이지들을 추가하자!

개발을 진행하면서 필요하다고 느끼는 페이지들을 계속해서 추가했다.

그러다보니 굳이 필요없는 페이지, 기능들이 점점 늘어만 갔다.

그리고 이것들을 구현하기 위한 디자인도 필요했고, 결국은 세번째 실수인 디자인 적용 작업을 반복했다.

결국 습득한 디자인툴로 와이어프레임처럼 각 페이지 UI 을 미리 정의했다.

처음부터 와이어프레임 같은 것을 만들어 놓고 시작했으면, 많은 시간을 절약할 수 있었을 것이다.

여섯번째 실수 – 이미지 리사이징 서버는 필수지!

PC, Mobile 모두 지원하겠다는 포부를 가지고 있었다.

그로 인해 자연스럽게 이미지 리사이징 서버가 필요했다.

이 외에도 많은 것을 고려했다.

업데이트 알림 메일, 회원가입 알림 등 많은 메일 템플릿이 필요해

presignedUrl 을 사용하는데 이건 한번 사용하고 나면 만료되도록 해야해 (관련 글)

사용자 화면 스크린샷 기능이 필요해

SPA 페이지 SEO 지원 (관련 글)

다국어 지원

기타 등등

필요한 기능이고, 있으면 좋은 기능이지만, 우선 오픈하고 해도 충분한 것들이다.

이런 것들을 대응하다보니 이슈가 하나라도 나면 엄청난 시간이 투자되었다.

일곱번째 실수 – 사용자 고려를 하지 않은 개발자 마인드

간혹 개발자 욕심으로 UX 기능을 넣은 것들이 존재했다.

내부 테스트 과정에서 기교를 부렸던 기능들이 오히려 혼란을 주고 있다는 것을 느꼈다.

사용자를 기준으로 다시 작업하니 훨씬 깔끔한 코드와 더 나은 UX 기능으로 두가지 모두 개선되었다.

여덟번째 실수 – 잘 나가는 쿠팡, 네이버, 카카오, 당근마켓 서비스를 참고하자!

본인이 만들고자 하는 서비스는 잘 나가는 위와 같은 서비스와는 다르다.

이러한 서비스들을 참고하다보니 굳이 필요하지 않는 기능들이 추가되었다.

가치에 집중하면 복잡해질 필요도 그럴 일도 없다는 것을 뒤늦게 깨달았다.

이외에도 엄청나게 많을 것이다.

가장 후회되는 건 정말 심플하게 만들고 빠르게 완성했어야하는 아쉬움이다.

그래도 이번 토이 프로젝트를 통해 전체적인 측면에서 많은 것들을 배우게 되었다.

그리고 더 많은 것들이 기다리고 있을 것이라 기대된다.

이 회고를 시작으로, 운영하면서 많은 것들을 경험하여 하나하나가 포스팅 주제가 되었으면 한다.

*현재는 내부 테스트 중이고, 배포가 된 후에 웹과 앱 링크를 남겨놓도록 하겠다.

모바일 최적화에 최적화 되어있지만, PC 에서도 사용 가능하다. (실시간으로 업데이트 중이다…)

현재는 PlayStore 에만 올라가있고, 빠른 시일 내에 AppStore 에 올릴 예정이다.

웹 사이트

PlayStore

AppStore

(많이 미숙하니 많은 관심과 도움을 주신다면 굉장히 기쁠 것이다…)

반응형

프로젝트가 장난이야?!

안녕하세요. 저는 배달의 민족 주문시스템을 개발하고 있는 권용근입니다.

(출처 : 타요장난감 타요학교와 꼬마버스타요 버스 친구들:지호토이TV)

저는 개발자의 개인 장난(감)인 프로젝트인 토이 프로젝트에 대해서 이야기해보려고 합니다. 저는 웹 개발 입문과 거의 동시에 토이 프로젝트를 시작했고 이 프로젝트들을 통해 많은 성장을 이루었다고 생각하고 있습니다. 그래서 토이 프로젝트를 통해 무엇을 얻을 수 있었는지에 대하여 말해보려고 합니다.

(우아한 Tech : 김영한 팀장님의 카드 뉴스 중..)

토이 프로젝트란?

토이 프로젝트가 무엇일까요? 크고 간단하게 2가지로 나눈다면 이렇습니다.

1. 여유시간만 투자한다.

본업과 건강에 영향을 미치지 않는 선에서 여유시간을 투자해야합니다.

2. 어떠한 목적을 달성한다.

기능, 스펙, 규모, 일정에 대한 제약은 있을 수도 있고 없을 수도 있습니다. 런칭 혹은 배포도 마찬가지입니다. 프로젝트가 반드시 런칭되거나 배포될 필요는 없습니다. 이것은 내가(혹은 우리가) 프로젝트의 목적을 무엇으로 정하냐 에 따라 달라지게 됩니다.

여유시간을 투자하여, 어떠한 목적을 달성하는 개발 프로젝트가 토이 프로젝트 인 것 입니다. 샘플 프로젝트, 기능을 제공하는 라이브러리 프로젝트, 서비스를 제공하는 웹,앱 프로젝트 등등 무엇이든지 나올 수 있지요!

나의 토이 프로젝트

많은 토이 프로젝트를 진행했었지만, 그 중 대표적으로 챗봇 프로젝트 , 코딩덕후 프로젝트 라는 2가지 저의 토이 프로젝트를 중심으로 이야기해보려 합니다. 그래서 일단 간단히 2가지 프로젝트를 소개하겠습니다.

챗봇 프로젝트

저의 웹 개발 시작과 거의 거의 비슷한 시기에 시작했던 첫 토이 프로젝트 입니다. 저의 첫 회사에서 꽤 많은 구성원들이 사용해주었던 대화형(ARS형) 챗봇이였습니다. 나중에는 핵심 코어 기능만 분리하여 프레임워크화 하여 Boot Starter Pack으로 제공하였고, 슬랙, 텔레그램, 라인 등과도 연동하였습니다. 회의실 현황, 예약, 사다리, 심심이, 섣다 기능 등 온갖 잡 기능을 하나씩 추가해나갔던 장난감이였습니다.

Github Link : kingbbode/spring-boot-chatbot

코딩덕후 프로젝트

개발자들의 Github 활동을 장려하고자 Github 활동을 시각화해주는 서비스 프로젝트 로 2018년 11월부터 정식 시즌을 오픈하여 진행 중인 프로젝트입니다. 3명의 구성원들과 함께 진행하고 있는 첫 팀 프로젝트이고, PM 역할을 맡아본 첫 프로젝트 입니다.

Site Link : co-duck.com

위 두 가지 프로젝트를 진행하며 경험할 수 있었던 것, 얻을 수 있었던 것에 대한 이야기를 시작해보겠습니다.

토이 프로젝트로 경험할 수 있었던 것 & 얻을 수 있었던 것

1. 기술에 대한 접근 기회

회사에서 만들게 되는 서비스는 안정성을 추구합니다. 그래서 직접 만들기보다는 잘 만들어진, 충분히 검증된 프레임워크, 라이브러리를 선택하고 조합하여 사용을 합니다. 때문에 본인이 직접 라이브러리와 프레임워크를 구현하는 경험을 가지기는 쉽지가 않습니다.

토이 프로젝트는 무엇이든 목적이 될 수 있고, 무엇이든 해도 되는 프로젝트이기 때문에 저 스스로에게 많은 기회를 만들어줄 수 있었습니다.

기회 #1 프레임워크 만들어보기

처음부터 프레임워크를 만들기로 했던 것은 아니였습니다. 챗봇 프로젝트 를 진행하면서, 챗봇 개발에 대한 진입을 낮추어주자는 목적을 달성하기 위해 프레임워크 처럼 만들어보자는 결론이 나온 것이지요.

어떻게 하면 스프링과 같이 쉽게 기능을 작성하도록 할까에서 시작되어, 스프링의 어노테이션 기반의 메타 프로그래밍 방식을 사용하게 되었습니다.

@Brain public class FirstBrain { @BrainCell(key = “따라해봐”, function = “echo-start”) public String echo(BrainRequest brainRequest) { return “말해봐”; } @BrainCell(function = “echo-end”, parent = “echo-start”) public String echo2(BrainRequest brainRequest) { return brainRequest.getContent(); } }

이런 식으로 말이죠. 이를 가능하게 하기 위해, Java Relfection API 를 알아야 했고, 동적으로 생성된 챗봇을 위한 Bean 을 관리하기 위해 Spring BeanFactory Container 와 닮은 BrainFactory 도 만들게 되었습니다. (물론 완성된 구현물이 Spring Framework 에는 훨씬 못미치지만.. )

서비스를 개발할 때 사용하거나 경험해보지 못할 기술과 방법들을 직접 사용해볼 수 있었고, 이런 기술들을 사용하여 만들어진 스프링 프레임워크의 전체를 부지런하게 까보기 시작했고, 이해하기 위해 노력을 했습니다. 이를 통해 내가 사용하고 있는 프레임워크가 내부적으로 대략 어떻게 돌아가는지를 조금은 이해할 수 있게 된 큰 계기가 되었습니다.

기회 #2 Spring Boot Starter 만들어보기

마찬가지로 만들어진 기능을 쉽게 제공하기 위한 고민을 하다가, Spring Boot 의 Starter Pack 을 만들어보기로 했습니다.

이 때가 약 3년 전으로 국내에서 아직 스프링 부트의 대한 오해들이 만연하던 시기이기도 하였습니다. 물론 당시 신입이였던 저는 그런 것은 모르고, 제가 사용하는 프레임워크를 이해하기 위해 노력을 하고 있던 시기이기도 합니다.

한글 문서가 거의 없던 당시에 공식 문서를 나름 열심히 파고, 소스를 직접 하나씩 모두 들여다보았던 삽질의 기억들이 납니다.

그래서 단일 모듈의 프로젝트에서

이런 구조의(중간 버전의 레파지토리가 삭제되어 현재 구조로 대체) 멀티 모듈 프로젝트로 탄생되었죠!

이 때 부트에 대해서 정말 많은 이해를 할 수 있었고,

덕분에 2017 Spring Camp 에서 연사로 발표도 할 수 있었습니다.

2. 새로운 관심사

신기술이나 이전에 사용해본 적 없는 기술을 운영중인 서비스에 바로 적용할 수 있을까요?

기술이 이미 충분히 검증되었고, 스스로 문제가 발생했을 때 빠르게 해결할 수 있을만큼 기술에 대하여 내가 성숙되었다면 고민을 해보겠지만, 그 이전에는 절대 반대를 할 것 같습니다.

그럼 토이 프로젝트로 사용을 해본 후에 서비스에 적용을 하면 될까요?

내 토이 프로젝트가 회사 이상의 대규모 트래픽을 받고 있으며, 회사보다 복잡한 비즈니스적 요구사항을 가지고 있다면 고민을 해보겠지만, 그 이전에는 절대 반대를 할 것 같습니다.

“새로운 기술, 새로운 모델을 쓰는건 현재 환경에선 더이상 문제를 해결할 수 없다고 느낄때만 엄청 엄청 부담감을 느끼면서 적용한다.” by jojoldu

그럼에도 저는 토이 프로젝트에서 꼭 새로운 관심사를 사용해보시길 강력하게 추천드립니다. 저는 호기심을 잃은 개발자는 성장할 수 없다고 강하게 믿고 있습니다. 현재 내 업무에서 사용하지 않는 것과 내가 가진 기술에 대한 호기심은 전혀 무관합니다. 어떠한 기술로 무언가를 해결해본 경험은 언젠가 반드시 도움이 될 것 입니다.

도움이 되었던 사례 #1 REDIS 활용

챗봇 프로젝트 는 처음에 1 DEPTH 를 가지는 매우 단순한 챗봇이였습니다. 공백 split 을 사용하여 명령어 뒤의 기능을 수행하도록 하였습니다.

#투표 짬뽕 -> 짬뽕을 투표한다

챗봇으로 만드려는 기능이 점점 많아짐에 따라 명령어가 점점 난해해지기 시작했습니다.

#연차 사용 반차 2018-11-04 오전 -> 2018년 11월 4일 오전반차를 사용한다.

그래서 Redis 를 활용하여 챗봇 대화의 짧은 Expire 의 세션을 만들었고, 그 세션의 존재에 따라 현재 해당 유저가 대화 중인 상태인지 아닌지를 판단하는 기능을 만들어 대화 방식의 채팅 방식을 만들었습니다.

이때 제가 하고 있는 서비스에는 Redis 비슷한 것도 사용하지 않았던 시기였습니다.

그러나 경험은 개인의 만족으로 끝나지 않았습니다. 현재 배달의 민족의 비동기 결제 시스템을 적용할 당시 주문시스템의 사용자 경험과 관련된 결제 완료를 확인하는 부분에서 이 방식을 제안했고, 이 기능은 현재도 잘 쓰고있는 기능이 되었습니다.

2년 뒤 다른 업무에서 이 기능을 사용하게 될거라곤 생각도 못했습니다. 그러나 이렇게 저의 본업에도 도움이 경험이 되었습니다.

도움이 되었던 사례 #2 ADMIN 뚝딱

현재는 서버개발자를 담당하고 있지만, 이전 회사에서는 프론트와 서버를 모두 개발하던 개발자였습니다. 서버는 서버대로 재미가 있고, 프론트는 프론트대로 재미가 있었지만 과감히 서버개발자의 길을 선택하였고 프론트엔드는 완전한 취미가 되었습니다.

담당 업무에서 프론트엔드가 완전히 없어진 후 VueJs 라는 기술이 화제가 되고 있었습니다. 개발자의 호기심은 무죄입니다. 그래서 당시 진행 중이던 토이 프로젝트 코딩덕후 프로젝트 의 프론트엔드를 VueJs 로 만들기로 했고 VueJs 를 신나게 공부했었습니다.

이 때도 마찬가지로 제 업무에 프론트엔드는 완전히 없을 줄 알았습니다.

백오피스 필요없는 시스템은 역시 없는 것이였을까요? 결국 백오피스에 대한 요구사항이 생기게 되었고, 프론트엔드 경험이 있는 제가 만들게 되었습니다.

총 2개의 어드민을 만들었는데, 기존 다른 프레임워크와 호환되는 css만 사용하여 템플릿 라이브러리를 사용하지 않고 만든 ADMIN은 2주 가 걸렸고, Vuejs 어드민 템플릿 라이브러리를 사용하여 만든 현재의 주문시스템 ADMIN 은 2일 만에 만들 수 있었습니다.

(위 그래프는 실제 지표와 아무런 관련이 없음)

당시 바쁜 일정 중 주문시스템 ADMIN 이 생각 이상으로 빨리 만들어져 저희 팀의 관리자(팀장님)가 신나했던 기억이 납니다.

결국 서비스와 상관없이 진행했던 토이 프로젝트가 또 다시 저의 본업에 도움이 되었습니다.

3. 풀사이클 개발(Design-Develop-Test-Deploy-Operate-Support)

요즘 많은 곳에서 업무의 세분화로 알지 않아도 괜찮은 것 같은 영역들이 생기고 있습니다. 그 대표적인 예가 서버 개발 직군과 인프라 직군이 아닐까 생각됩니다. 서버 개발자가 정말 인프라에 대해서 몰라도 되는 것일까요?

저는 우아한형제들에 입사한 후 나와 같은 서버 개발자이지만, 인프라 괴물들을 몇 명 만났습니다.

이분들을 보며 확실히 느낀 것은, 내가 인프라를 직접 하지 않게 되더라도, 반드시 알아야 한다는 것 입니다. 인프라를 알고 모르고에 따라서 설계부터 개발, 운영(문제 해결)에 대한 모든 것이 차이가 난다는 것을 알았기 때문입니다. 넷플릭스의 풀사이클 개발자 블로깅에서도 이런 말을 합니다.

Operating What You Build(당신이 구축한 것을 운영하라)!!

그러나 현재 국내 개발자들이 풀사이클 개발을 회사에서 경험하긴 쉽지 않습니다. 그렇다면 어디서 경험할 수 있을까요?! 바로 토이 프로젝트입니다!

코덕 프로젝트 는 아키텍처부터 인프라까지 모두 직접 설계하고 구축하여 서비스되고 있는 저의 첫 토이 프로젝트입니다. “나 혼자서 하나의 서비스를 처음부터 끝까지 만들 수 있을까?” 라는 궁금증이 항상 있었습니다. 그러던 중 정말 만들어보고 싶은 서비스가 생겼고, 망설임 없이 시작을 하였던 것 같습니다. 토이 프로젝트를 시작한다는 것은 저에게 너무 당연한 일이 되었고, 토이 프로젝트는 정말 토이 프로젝트일 뿐이였기 때문입니다.

코덕 프로젝트

사실 하나의 프로젝트로 만들 수 있었지만, 멀티 프로젝트로 쪼개어 설계를 해보았습니다. 당연히 이런 소규모의 서비스라면 하나의 프로젝트로 만드는 것이 좋은 결정이겠지만, 제가 경험하고 싶었던 것은 분산환경이였습니다. 토이 프로젝트에서 나의 목적을 달성하는데에는 전혀 오버스팩이 아닌 아주 적합한 스팩이 되는 것 입니다.

그래서 해보고 싶던 디자인, TDD, 개발 스타일, 브랜치 전략, 이슈 관리, 배포 방식 등을 모두 해볼 수 있었고, 많은 시행 착오를 통해 더 많은 경험치를 쌓을 수 있었습니다.

그래서 완성된 구조는 아래와 같습니다.

저만의 멋진 구조를 완성시키고 싶었는데, 이 모든 것이 돈 이라는 것을 알게 되었습니다. 회사에서 사용하고 있던 당연한 것들을 적용해보려 하였고, AWS 견적 계산기로 대충 계산을 해보았더니…

(우아한형제들은 빵빵한 AWS 스팩을 제공합니다!)

그래서 비용 최소화 모델로 집에서 잠자고 있던 라즈베리파이까지 동원되어 완성된 구조입니다. 서버에 대한 설정부터 데이터베이스 설치까지 모든 것을 직접 해볼 수 있었던 좋은 경험이 되었습니다. 그 과정에서 호돌맨님의 영상(서버 기본 설정, MariaDB 설치)과 알구몬(algumon.com)의 경험을 담은 깨알팁이 정말 많은 도움이 되었습니다.

인프라 괴물님들 다시 한번 감사합니다.

아쉬운 점이 당연히 많습니다. 비용 문제로 AWS 에서 경험해보고 싶은 많은 것들을 아직 사용해보지 못한 것 때문입니다. 그렇지만! 저의 프로젝트는 진행형입니다! (정식 오픈한지 1달도 안된..) 앞으로 트래픽이 (제발) 늘어준다면 분명 더 좋은 경험들을 할 수 있으리라 확신합니다.

Site Link : co-duck.com

많이 이용해주세요 !!

4. 관리자를 이해

저같은 주니어가 어디가서 PM 역할을 해보겠나요? 토이 프로젝트이기에 가능합니다! 소제목으로 관리자를 이해 라고 해놓았지만 사실 관리자는 아직 저에게는 이해할 수 없는 영역입니다. 그럼에도 프로젝트를 진행하면서 느낄 수 있었던 관리자의 일부 모습의 이해 를 이야기 해보려고 합니다!

저는 코덕 프로젝트 를 만들기 위해, 3명의 개발자를 합류시켰습니다. 저는 꼭 만들고 싶었던 뚜렷한 프로젝트의 방향과, 취지가 있었기에 프로젝트를 시작하였고, 지인들은 개발 경험이 필요하여 합류한 것 입니다.

전체 설계가 끝나고 구현을 시작할 때까지는 모든 것이 순조로웠습니다. 구현해야할 내용을 작게 나누어 TODO 를 작성하였고, 그것을 구성원들에게 뿌리고 구현이 시작되면서 이상한 것들이 나타나기 시작했습니다!

내가 의도한 바와, 실제 구현이 미묘하게 다른 방향으로 흘러가고 있었습니다. 그러던 중 충격적인 말!

이런 기능을 만들어야하니까 만들고 있는데, 사실 이 기능을 왜 만드는지, 만들어서 뭘 하겠다는 건지 전혀 모르겠다.

그때서야 무엇이 잘못되었는지를 알았습니다. “내가 생각하는게 대충 이런거다” 라며 합류를 시켰고, “내가 생각하는게 있으니까, 일단 해놔봐”, “대충 이런건데, 나중에 설명해줄게” 같은 말들을 했던 순간이 스쳐갔습니다. 구성원들이 서비스를 전혀 이해하지 못하고 있던 것 입니다.

그 후 정밀한 PPT 를 만들어, 2시간에 걸쳐서 구성원들에게 프로젝트를 설명을 하였고 그제서야 많은 오해들이 풀리게 되었습니다.

(하지만 그래도 다 이해하진 못하더라는…)

그리고 우아한형제들 을 다시 생각하였습니다. 매월 진행되는 타운홀 행사, 그리고 최근 조직개편 이후에도 회사의 방향에 대하여 자세히 설명해주셨던 부문장님, 실장님, 팀장님을 떠올렸습니다.

(찍어둔게 없어서 합성을.. 실제론 꽉꽉 찹니다)

내가 현재 우리 회사의 방향을 알고 있고 이해하고 있다는 점, 고작 3명에게 설명하기도 벅찼었던 나의 모습을 떠올렸을 때야 관리자분들의 그런 모습들을 이해할 수 있었고, 감사하다고 생각이 들었습니다.

추가로..

그리고 구성원들을 쪼고 있는 내 모습에 팀장님도 사알짝 이해할 수 있었… (갈갈갈)

마무리

토이 프로젝트는 이렇 듯 저에게 정말 많은 경험을 선물해주고 있습니다. 개발자는 토이 프로젝트를 무조건 해야한다는 이야기가 아니며, 토이 프로젝트를 해야 좋은 개발자라는 이야기도 아닙니다. 그러나 토이 프로젝트를 하고 있는 개발자는 분명 더 많은 경험을 할 수 있는 개발자라는 것은 꼭 말하고 싶었습니다.

저에게 많은 토이 프로젝트들이 생겼고, 첫 서비스를 하는 프로젝트도 생겼습니다. 이 프로젝트들은 기꺼이 레거시가 되어주어, 레거시를 개선해보는 경험도 시켜줄 것이고, 트래픽이 늘어나 그에 따른 새로운 경험들을 시켜줄 것 입니다. 내가 만든 라이브러리를 사용하는 사람들도 생길 것이고, 그들이 제기하는 이슈도 맛보게 될 것 입니다. 그리고 저는 이 프로젝트들을 통해 더 성장하겠지요?

관심있는 기술, 하고싶은 개발이 있지는 않으신가요? 그렇다면 시작해보세요! 토이 프로젝트를!

어떤 프로젝트를 진행하면 좋을까? 토이 프로젝트 주제 찾기

토이 프로젝트를 해보자!라고 다짐했지만, 막상 시작하려니 막막하다

SW분야는 엄청나게 많고, 쓸 기술도 많지만 그중에 무엇을 택해야 할까?

라는 고민이 들 때, 아래의 사이트를 참고했다.

https://www.codementor.io/npostolovski/40-side-project-ideas-for-software-engineers-g8xckyxef

소프트웨어 엔지니어의 역량 강화를 위한 사이드 프로젝트의 기본 방향을 추천해준 글이다.

나는 이 사이트를 보고, 다음과 같은 사항들을 참고하여 프로젝트를 할 것이다.

1. FTP 클라이언트(웹 또는 CLI 응용 프로그램) or HTTP Server 구현(Any Programming Launguage)

안전한 파일 전송을 지원하는 간단한 FTP 클라이언트 혹은 HTTP 서버를 구현해보는 과제이다.

네트워크의 기본기를 다질 수 있는 프로젝트이다. HTTP 서버를 구현하는 법은(https://ruslanspivak.com/lsbaws-part1/)에도 잘 나와있으니 참고할 수 있을 것 같다.

수업 들을땐 매일 출튀해서 C+맞았었는데…. ㅠㅡㅜ

2. 암호 구현(Any Programming Language)

텍스트 문자열을 입력으로 받아 Caesar 암호와 같은 암호를 사용하여 암호화하는 도구 구현

대학 입학때 젤 첨에 관심있었던 보안에 관련된 입문자가 할 수 있는 과제

해시 공부도 다시 하면 좋을 듯?

3. 가계부 인터페이스(웹앱 or 모바일앱)

사용자에 대한 지출/수입을 추가 및 분류하는 인터페이스 구현. 입력 내용을 기반으로 월별 통계를 출력하고 분석하여 맞춤형 알림을 제공하는 어플리케이션

2학년 때 수업시간에 java로 했던 가계부 프로젝트와 유사하다. 난이도 자체는 어렵진 않을 듯?

4. 체스 엔진(C++엔진)

XBoard와 같은 Universal Chess Interface 호환 GUI를 사용하여 체스 게임 엔진을 구현하는 과제.

예제는 Stockfish에서 참고할 수 있다고 한다. 어렵다면 일부 기능 구현도 OK

리버시 프로젝트를 했던 적이 있는데, 꽤나 재밌을 것 같다ㅎㅎ

5. 슬랙 봇(슬랙 API)

커피 주문 봇이나, git repository의 커밋 수정 사항을 알려주는 봇 구현하기

6. 점심 선택 도구(CLI, 웹앱 or 모바일앱)

google 검색에서 데이터를 가져와 위치, 가격, 유형을 체크하면 점심을 추천해주는 어플리케이션이다.

API 활용이나 외부 데이터 활용하는 프로젝트를 해본 적이 없어서 도움이 될 듯

7. 아맞다우산 알리미(웹앱 or 모바일앱 or 봇) -> 6월

날씨 API를 가져와서 아침에 우산을 챙겨가야 하는지 알려주는 어플리케이션 구현

8.

위와 같은 프로젝트 대주제들을 활용하여 만들어봐야겠다.

목록은 추가되거나 수정될 수 있음

[토이프로젝트] 1편 : 간단한 게시판 만들기

[토이프로젝트] 1편 : 간단한 게시판 만들기

안녕하세요? 정리하는 개발자 워니즈입니다. 이번시간에는 간단한 토이프로젝트 만들어보기라는 주제로 글을 연재해볼까 합니다. 필자가 속한 부서에서 작은 도서관 이라는 개념으로 도서를 대여하고 있는데, 그동안은 모든것을 수기로 작성을 해왔었습니다.

필자도 매번 책을 빌릴 때면, 기록하는 것이 너무나 귀찮았었고, 특히 이력관리가 정확하게 되지 않다보니, 누가 어떤 책을 빌려갔는지가 정확하게 추적이 되지 않았습니다.

그래서 이번에는 간단하게 0원으로 운영하는 서버리스 어플리케이션 을 구축하여 작게나마 도움이 되도록 해보았습니다.

지난 글은 아래를 참고 부탁드립니다.

1. 아키텍처

정말 심플그자체입니다.

S3

API GW + Lambda

Dynamodb

크게는 위와 같이 3개의 구획으로 나위어져 있습니다.

S3에서는 front-end 소스로부터 빌드된 static한 파일들이 올라갑니다. (idnex.html + build js ..)

API GW + Lambda 에서능 화면에 출력할 데이터를 가져오고 혹은 데이터를 수정하는 역할을 합니다.

Dynamodb 는 데이터원천이 적제되는 Database 입니다.

위와같은 아키텍처를 서버리스 구성시에 굉장히 많이 사용하긴 합니다.

2. 기획

사실 기획이라는게 필요하나 싶을정도로 간단한 어플리케이션을 구축하는 프로젝입니다. 어떻게보면 게시판류의 기능이라고 볼 수 도 있습니다.

전체적인 페이지는

로그인

도서 리스트 페이지

나의 도서 예약 페이지

로 크게 3가지 페이지로 구성이 되어있고,

요소의 기능은

로그인 / 로그아웃 / 회원가입 기능

도서 예약 기능

도서 반납 기능

페이징 기능

으로 구분 되어있습니다.

로그인 기능은 어디서나 볼 수 있으므로 첨부 하지 않았습니다.

3. 설계

설계는 크게 아래와 같이 2부분에 대해서 진행을 했습니다.

DynamoDB 테이블 설계

API 스펙 설계

위와 같이 생각을 하고 간단하게 다음과 같이 진행했습니다.

[DB 설계]

User

{ “email”: “[email protected]”, “name”: “wonizz”, “password”: “vMLhwE7ZamUj1dwF+bSauQ==” // 패스워드 암호화 } 1 2 3 4 5 6 { “email” : “[email protected]” , “name” : “wonizz” , “password” : “vMLhwE7ZamUj1dwF+bSauQ==” // 패스워드 암호화 }

Book

{ “duedate”: “2020-06-09”, “reservationYN”: “N”, //y 예약가능 , N 불가 “title”: “쿠버네티스패턴”, “author” : “안승규” } 1 2 3 4 5 6 7 { “duedate” : “2020-06-09” , “reservationYN” : “N” , //y 예약가능 , N 불가 “title” : “쿠버네티스패턴” , “author” : “안승규” }

Rental

{ “rentalno” : 1111 “booktitle”: “쿠버네티스패턴”, “duedate”: “2020-05-14”, “email”: “[email protected]”, “rsrvdate”: “2020-05-24” “rental_compdate” : “2020-05-28” } 1 2 3 4 5 6 7 8 9 { “rentalno” : 1111 “booktitle” : “쿠버네티스패턴” , “duedate” : “2020-05-14” , “email” : “[email protected]” , “rsrvdate” : “2020-05-24” “rental_compdate” : “2020-05-28” }

[API 스펙 설계]

http api 설계 원칙은 따로 정의된것은 없고, 각 프로젝트마다 상황에 맞춰서 진행을 하면됩니다.

아래의 내용처럼 여러가지 가능한 설계 원칙을 세우고 수행을 하는 것이 좋습니다.

Heroku 플랫폼 API 설계 원칙 (한국어)

규칙이 없다면, 통상적인 설계 작업에 따라 진행합니다. 필자는 다음과 같이 진행했습니다.

로그인

//login : 로그인 API [request parameter] { “email”: “[email protected]”, “password”: “1231” } [response] – 200 / 정상 로그인 { “user”: { “id”: “[email protected]”, “name”: “wonizz”, “token”: “eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InNrZGkua2ltQHNhbXN1bmcuY29tIiwibmFtZSI6Iuq5gOyEoOyasCIsImlhdCI6MTU5MDcyODcxMiwiZXhwIjoxNTkwNzMwNTEyLCJpc3MiOiJnZXRfdG9rZW5fY29udHJvbGxlciJ9.TL2TafWc9ivw5ZDqObwU49rjJf5X1JnneZ0GohGa7VU” } } [response] – 400 / parameter missed { “message”: “required parameter is missed” } [response] – 500 { “message”: “Internal Server Error” } 예제 : https://8xk6c6vlz2.execute-api.ap-northeast-2.amazonaws.com/login 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 //login : 로그인 API [ request parameter ] { “email” : “[email protected]” , “password” : “1231” } [ response ] – 200 / 정상 로그인 { “user” : { “id” : “[email protected]” , “name” : “wonizz” , “token” : “eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InNrZGkua2ltQHNhbXN1bmcuY29tIiwibmFtZSI6Iuq5gOyEoOyasCIsImlhdCI6MTU5MDcyODcxMiwiZXhwIjoxNTkwNzMwNTEyLCJpc3MiOiJnZXRfdG9rZW5fY29udHJvbGxlciJ9.TL2TafWc9ivw5ZDqObwU49rjJf5X1JnneZ0GohGa7VU” } } [ response ] – 400 / parameter missed { “message” : “required parameter is missed” } [ response ] – 500 { “message” : “Internal Server Error” } 예제 : https : //8xk6c6vlz2.execute-api.ap-northeast-2.amazonaws.com/login

유저 등록

//register : 유저 등록 API { “email”: “[email protected]”, “name”: “dlehddnjs”, “password”: “1234” } [response] – 200 / 정상 유저 등록 { “user”: { “email”: “[email protected]”, “username”: “dlehddnjs”, “token”: “eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InRlc3QyMjFAdGVzdC5jb20iLCJpYXQiOjE1OTA3Mjg4NzgsImV4cCI6MTU5MDczMDY3OCwiaXNzIjoiZ2V0X3Rva2VuX2NvbnRyb2xsZXIifQ.5snUeOV6zzr7_RwuSC6gQeFi1NBImjkXaXF_WGCTgvw” } } [response] – 400 / parameter missed { “message”: “required parameter is missed” } [response] – 500 { “message”: “Internal Server Error” } 예제 : https://8xk6c6vlz2.execute-api.ap-northeast-2.amazonaws.com/register 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 //register : 유저 등록 API { “email” : “[email protected]” , “name” : “dlehddnjs” , “password” : “1234” } [ response ] – 200 / 정상 유저 등록 { “user” : { “email” : “[email protected]” , “username” : “dlehddnjs” , “token” : “eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InRlc3QyMjFAdGVzdC5jb20iLCJpYXQiOjE1OTA3Mjg4NzgsImV4cCI6MTU5MDczMDY3OCwiaXNzIjoiZ2V0X3Rva2VuX2NvbnRyb2xsZXIifQ.5snUeOV6zzr7_RwuSC6gQeFi1NBImjkXaXF_WGCTgvw” } } [ response ] – 400 / parameter missed { “message” : “required parameter is missed” } [ response ] – 500 { “message” : “Internal Server Error” } 예제 : https : //8xk6c6vlz2.execute-api.ap-northeast-2.amazonaws.com/register

유저 정보 조회(JWT 토큰 방식)

//userinfo : 토큰값 유효성 검증 { “token”: “eyJhbiOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InRlc3QyMjFAdGVzdC5jb20iLCJuYW1lIjoiZGRkZGRkMTExMjIiLCJpYXQiOjE1OTAyMTM0MTAsImV4cCI6MTU5MDIxNTIxMCwiaXNzIjoiZ2V0X3Rva2VuX2NvbnRyb2xsZXIifQ.1-wekORpzeMtkC3SHJ2ZkrvnrFkwD_JgyjMKm4hn7ZE” } [response] – 200 / 정상 토근 { “user”: { “id”: “[email protected]”, “iat”: 1590728878, “exp”: 1590730678, “iss”: “get_token_controller” } } [response] – 400 / parameter missed { “message”: “required parameter is missed” } [response] – 401 / unauthorized { “message”: “invalid token” } [response] – 500 { “message”: “Internal Server Error” } 예제 : https://8xk6c6vlz2.execute-api.ap-northeast-2.amazonaws.com/userinfo 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 32 33 //userinfo : 토큰값 유효성 검증 { “token” : “eyJhbiOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InRlc3QyMjFAdGVzdC5jb20iLCJuYW1lIjoiZGRkZGRkMTExMjIiLCJpYXQiOjE1OTAyMTM0MTAsImV4cCI6MTU5MDIxNTIxMCwiaXNzIjoiZ2V0X3Rva2VuX2NvbnRyb2xsZXIifQ.1-wekORpzeMtkC3SHJ2ZkrvnrFkwD_JgyjMKm4hn7ZE” } [ response ] – 200 / 정상 토근 { “user” : { “id” : “[email protected]” , “iat” : 1590728878 , “exp” : 1590730678 , “iss” : “get_token_controller” } } [ response ] – 400 / parameter missed { “message” : “required parameter is missed” } [ response ] – 401 / unauthorized { “message” : “invalid token” } [ response ] – 500 { “message” : “Internal Server Error” } 예제 : https : //8xk6c6vlz2.execute-api.ap-northeast-2.amazonaws.com/userinfo

이외에

도서 리스트 / 나의 대출 예약 리스트

대출 / 반납

관련한 API 들이 있습니다.

4. 개발

개발기술 요소에는 다음의 다음과 같이 생각했습니다

Font-end : React + Redux

Back-end : Node.js + Dynamodb

필자의 블로그에는 해당 기술요소에 대한 설명이 간단하게 되어있습니다. 다만 이번에 새로이 DynamoDB를 사용해보면서, api를 어떤 식으로 만들어야되는지 고민을 하고 작성해보는 시간을 갖을 수 있었습니다.

각 람다 API는 다음의 기록해두었습니다.

Node.js + Dynamodb 연계 소스

API 기능들에 대해서는 얼추 완성이 되어있고, 다음의 URL로 호출을 하면 됩니다.

5. 테스트

아직 프론트엔드가 완성이 되지 않아서, 테스트를 진행하고 있지는 못합니다. 다만, 이번에 작성하면서 동시에 TDD를 도입해볼까 생각중입니다. 테스트 코드까지 같이 작성하여, 내가 작성한 코드가 운영으로 반영되기 이전에 테스트 코드를 통해서 정상동작에 대한 여부를 체크하도록 해보려고 합니다.

주로 많이 사용하는 것이 mocha, jest, jasmine 등이 있는 것 같습니다. 다음시간에 좀더 학습을 하고 같이 병행을 해볼까 합니다.

6. 마치며..

이번에는 간단하게 토이프로젝트를 기획해보고, 구상한대로 바로바로 구현을 해보면서 마치 장난감을 갖고 놀듯 만들어 볼 생각입니다. 아직은 Back-end 위주로 완성을 하는 단계이고, 좀더 구체화된 소스코드나 화면개발이 완료되면 그때 그때 정리해서 포스팅 하도록 하겠습니다.

이번 포스팅은 전체적인 아웃라인에 해당하는 내용으로 각 단계에 맞춰서 다른 프로젝트를 가더라도 진행을 해보면 좋을것 같습니다.

이것이 좋아요: 좋아하기 가져오는 중…

토이프로젝트를 시작하는 방법

하이~~~!!

지난번에 내가 토이프로젝트가 무엇인지에 대해서 포스팅을 했었다.

devkingdom.tistory.com/223

그런데 주변에서

“그럼 토이프로젝트는 어떻게 시작해야하나요?”

라는 질문을 해서… 이에 답을 드리기 위해 이렇게 글을 쓴다..

<출처 - 아이언맨>

나는 옛날 부터 토이프로젝트하면 아이언맨에서 토니스타크가 아이언맨 수트를 처음 만들던 장면이 생각난다. 그장면만 생각하면 뭔가 심장이 뛰면서 막 개발 욕구가 엄청 올라간다. 아이언맨 만큼 부자는 아니지만, 저런 영화속 주인공이 됐다고 생각하면서 토이프로젝트를 해보자 ㅎㅎ

토이프로젝트를 시작하기전에 딱 두가지만 생각을 해주면 된다.

1. 무엇을 만들 것 인가?

내가 토이프로젝트를 할때 가장 먼저하는 것이 바로

“이 토이프로젝트에서 무엇을 만들것이냐?”

이걸 가장 먼저 정한다.

구체적으로 말씀드리자면, 나는 우선 두가지 중 하나를 정한다.

하나는 나 혹은 주변 사람이 필요하다고 말했거나 괜찮다고 생각이 든 아이디어를 서비스로 구현하는 것이고,

하나는 나만의 API? 프레임워크? 아무튼 언제나 사용가능한 나만의 코드를 만들어 보는 것이다.

먼저 서비스의 경우는 생각할게 많다. 서비스의 주제를 명확하게 정하고, 거기에 필요한 기능, 그리고 사용할 언어와 기술등의 스펙, 프로젝트 규모, 일정 … 등 굉장히 생각해줄게 많고… 프로젝트 시작전에 이러한 요소를 구체적으로 정의해줘야 프로젝트가 산으로 가지 않는다. 서비스 만드는게 쉽지 않고 굉장히 고된 작업이긴 하지만 막상 서비스 배포까지 해보면 이만큼 뿌듯할 수가 없다. 잘되든 안되든 확실히 뿌듯하다.

두번째는 나만의 프레임워크를 만들어 보는 건데, 이걸 만들어두면 본업에서도 굉장히 유용하게 쓰인다. 내가 한때 안드로이드 개발팀에 있었을때는, 나만의 간편로그인 UI 화면이나 페이징을 하는 소스나, 캘린더 같은 걸 나만의 방식으로 만들어서 어떤 프로젝트를 해도 비슷한 기능이 있을때 이 소스들을 응용해서 썼었는데, 프로젝트에서 굉장히 시간을 많이 단축했던 경험이 있다. 그리고 만들어 두는데 그치지 않고, 계속해서 업데이트 시켜주면 점점 더 완성도를 높일 수 있다.

2. 언제, 어떻게 할 것이냐?

토이프로젝트 앞에 토이라는 말이 있다. 토이가 장난감이라는 뜻이니, 장난감은 가지고 놀수 있는것이어야 한다.

그러니 당연히 재밌게 즐길수 있을 만큼만 해야한다.

이게 본업에 영향을 미치지 않을 정도로만 해야한다. 이거 한다고 막 무리해서 새벽까지하고 그러면 안된다. 건강이 가장 중요하고, 특히 개발자들의 체력 , 컨디션 유지는 굉장히 중요하다.

토이프로젝트를 하면서 내가 세운 규칙이 하나 있는데, 프로젝트를 재밌게 하다가도, 원하는대로 구현이 안되서 짜증날때가 있다. 그럴때는 즉시 그만두고 다른 취미생활을 한다. 웹툰을 보기도하고 유튜브를 보기도하고, 그러고 그 짜증나는 마음이 진정되서 다시 프로젝트를 하면 또 능률이 굉장히 좋다.

아무튼 건강이 최고이니 이 토이프로젝트 때문에 자신의 뼈를 깎아 프로젝트를 하지 않기를 바란다.

그럼 ~~모두 즐거운 토이프로젝트하길~~!!

반응형

1년 동안 개발자 2명이 만든 토이프로젝트 맛보기 [1편]

반응형

안녕하세요.

저는 현재 판교에서 데이터 엔지니어로 일하고 있는 개발자1(Beom)입니다. 이번 포스팅에서는 같은 회사에 다니고 있는 동기인 개발자2(Gary)와 약 1년여간 진행했던 토이프로젝트에 대해서 회고해보려고 합니다.

먼저 간략히 1년간 어떤 토이프로젝트를 진행했는지에 간단히 설명하도록 하겠습니다. 저희가 만든 서비스는 Moobe(무브)라는 서비스로 유튜버들이 다녀간 장소들을 맵(MAP)화 시켜주는 서비스입니다. 먹방 컨텐츠를 보며 한 번씩은 ‘나도 저기 꼭 가봐야겠다!’라고 생각한적 없으신가요? 그럴때 도움이 될만한 서비스입니다.

백문이불여일견이라고 한 번 직접 보고 오시죠!!!

https://moobe.co.kr/

Moobe (Map of Youtube) – 1년 여간의 토이프로젝트 작업 결과물 (맛집 검색은 무브!)

대충 감이 오시나요???

저희가 1년 동안 토이프로젝트로 개발한 무브(Moobe)는 Map of Youtube의 약어이자 Move(움직이다) 와의 비슷한 발음을 통해 ‘유튜버들이 다녀온 곳으로 이동하다’라는 느낌을 줄 수 있는 중의적 의미를 내포하고 있습니다. 맛집 찾을 때 자주 사용해 주시면 감사하겠습니다😃

그럼 오늘 포스팅을 남기는 본 목적으로 돌아와 1년 동안 개발을 어떻게 진행해왔는지 Moobe서비스는 어떻게 만들어 졌는지에 대해 이야기해보도록 하겠습니다.

때는 바야흐로….2019년 8월 7일…

Moobe의 Si발점😅

동기 몇 명이 모여있는 방에 개리의 위와 같은 발언에서 시작되었습니다. 다른 동료들은 별관심을 보이지 않았지만 이전 토이프로젝트를 한 번 진행해보고 또 다른 토이프로젝트를 물색하고 있던 찰나였기에 ‘한 번 들어나 볼까?’ 하는 마음으로 ✋손을 들어봅니다. (혹시 개인적으로 진행했던 이전 프로젝트가 궁금하시다면 2018 개발자 Life 회고 참고해주세요_)

이렇게 둘의 프로젝트는 시작되었고 ‘쇠뿔도 단김에 빼라’는 말이 있지 않겠습니까? 개리의 아이디어와 저의 추진력이 합쳐지며 바로 작업에 돌입하게 되었습니다.

아이디어 기획서를 만들었습니다.

Again..사실 개리와의 토이프로젝트는 처음이 아니였습니다. 기존 한 번 시도했었던………..프롲ㅌ 있었습니다. 넘어가겠습니다.

기왕하는거 제대로 하고 싶어 서비스 개발에 대한 기획문서를 작성했습니다. 서비스 기획 배경과 컨셉 그리고 1차 구현 목표들을 PPT로 만들어 보았습니다. 대충대충 하고 싶지 않았습니다. 이 프로젝트는 ‘진지’했으니까요

이렇게 슬라이드 모아보기로 보니 꽤나 그럴싸하네요?ㅎㅎ

다음에 기회가 되면 처음 시작이되었던 기획 문서와 PPT도 공개해보도록 하겠습니다.

그렇게 저희는 개발스펙을 정하기 시작했습니다. 일단 저와 개리는 현재 막 7년 차에 접어든 개발자로 신입당시에 웹개발 직무로 시작하였습니다. 지금도 물론 웹개발을 하고 있긴하지만 데이터쪽과 오픈소스를 다루고 있습니다. (뭐 크게 궁금하시진 않을테니 넘어갈게요.)

1. 토이프로젝트의 목적 (익숙한 기술을 조심하라)

일단 토이프로젝트의 목적 자체가 머릿속의 아이디어를 취미삼아 개발하는데 목적이 있을 수 있습니다. 이러한 경우 익숙한 기술로 빨리 만드는 것도 중요하지만 회사 업무에서 다루지 않는 언어나 프레임워크를 학습하며 적용해보는 것도 큰 도움이 될 수 있습니다.

그래서 프론트(Front)쪽은 처음 Vue.js를 사용해 볼까 하였지만 이미 개리는 Vue.js를 사용하고 있었고 React를 사용하는게 어떻겠냐고 물었습니다. 이에 저는 아주 명쾌히 대답해주었습니다.

“그래 그럼 너가 리액트로 프론트를 해라^^” 라고 😊

그리고 저는 백엔드(Backend) 쪽을 맡기로 하였습니다.

초창기 기획 문서 중 일부

정리해보자면

Front : React & Redux + Javascript +Kakao MAP

Backend : SpirngBoot + Java + JPA + MYSQL + Google Oauth

2. 소스코드 관리의 꽃 GIT

타짜 中

저희는 협업을 위한 툴로 Git을 사용하였고 개발하기전 모든 기능 개발에 대한 Issue를 발행하고 각자가 맡은 기능들은 해당 feature에 개발한 후 검토하고 Merge하는 방식으로 진행하였습니다. 개리는 프론트 쪽을 진행하였고 저는 백엔드 쪽을 진행하였기에 각자가 맡은 Feature을 Merge할 때에 크게 충돌이 나거나 하는 문제는 발생하지 않았습니다. 약 1년 동안 84개의 Issue를 등록하였고 그 중 82개가 Closed된 상태입니다.

84개의 Issue 발행

지금에 와서 보니 뿌듯뿌듯🍀하네요…

처리한 Issue 목록 중 일부

이슈를 만들 때 커스텀 라벨(label)도 만들어 사용하였습니다. 해당 이슈가 기존 기능을 보완하는 이슈인지 새로운 기능을 개발하는 이슈인지 라벨만 보고도 알 수 있습니다.

저희는 Git에서 무료로 제공하는 private repo를 사용하고 있습니다.

first commit – 2019년 8.11

위에서 보시다 시피 첫 커밋은 8월 11일⭐️ 입니다. 시간 진짜 빠르다……

3. 악당(마음속 악당)이 너무 많다.

타짜 中

프로젝트를 1달도 아니고 2달도 아니고 6달도 아니고 1년😱 동안 진행하다 보니 서로가 손을 놓고 지냈던 적도 있었습니다. 그 이유야 다양하겠지만 사실 저의 경우는 귀찮음이 제일 컸습니다…아니 회사 일도 하고 운동도 해야되고 개인 공부도 하고 포스팅도 해야하는데 프로젝트까지 해야한다고 생각하니 가끔은 가슴이 너무 먹먹했습니다….너무 해야할게 많다보니 빨리 빨리 움직여서 하면 좋으련만…..그 반대였습니다…그냥 회사 일 끝나면 그냥 쉬고 싶은건 저뿐만이 아니겠죠…? 물론 개리도 저와 같은 생각과 감정을 겪었을 것이라고 생각합니다. 그렇게 저희는 서로가 두 세 달을 별다른 진척없이 보내기도 하였습니다.

하지만 함께 꾸는 명확한 목표가 있었기에 서로가 서로를 일으켜 세워주곤 하였습니다. 매주 한 번씩은 만나 서로 개발하기로 했던 기능들에 대해 리뷰하는 시간을 가지려 노력했고 한 주 마다 스스로가 해야할 기능에 대한 목표를 설정하였습니다.

지금에와서 드는 생각은 이건 분명히 혼자 진행했다면 중간에 때려치고도 남았을 것이라는 겁니다ㅎㅎ 유독 한 문구가 떠오르네요 ‘멀리가려면 함께 가라’

해뜨는 줄 모르고 개발하던 날

마치며

쓰다보니 길이 너무 길어질 것 같아 이번 포스팅은 여기서 마무리 해보려고 합니다.

1년 길다면 길고 짧다면 짧은 시간 동안 (짧지는 않았음…) 같이 개발하며 귀찮아서 손을 놓고 싶었던 적도 있었습니다. 하지만 그럼에도 여기까지 올 수 있었던 데에는 같은 곳을 바라보며 함께 해주는 동료가 있었기 때문이라고 생각합니다.

함께 토이프로젝트를 시작했을 때 1차 목표에 이르기 까지 1년이라는 시간이 걸렸습니다. 빠르진 않았지만 완성도 있는 서비스를 만드는데 집중하였습니다. 이제부터가 진짜 시작이라고 생각합니다. 아직 많이 부족한 시스템이지만 이 글을 보시는 분들께서 방문해주시고 피드백 주신다면 앞으로 서비스가 커나가는데 정말 많은 힘이 될 것 같습니다.

2편에서는 시스템을 개발하면서 겪었던 이슈들에 대해서 다뤄 보도록 하겠습니다.

긴 글 읽어주셔서 감사합니다.🙏

반응형

ITcoin :: 1. 무엇을 만들 것인가?

사이드 프로젝트를 실행하기에 앞서 아이디어 부터 생각하자.

내가 고민해본 주제는 다음과 같다.

1. 스터디 모집사이트

2.아침형인간(미라클모닝) 어플

3.우리 아파트 장터

4.개발자 스킬체크

5. 클론코딩(스타벅스)

6. 만화책 중고거래 사이트

너무 간단한 게시판 성격 애플리케이션은 빼기로했다.

1) 스터디 모집사이트 : 유행이 지나지기는 했지만, 모각코는 개발자에게 재미있는 주제다.

서칭을 해봤지만 모각코를 전문으로 하는 사이트는 없었다.

모각코는 1인 코딩인증(?)으로 바뀐 경우도 많았다.

여기서 좀더 발전시켜서 주제별(Node, Spring, 알고리즘), 비주제로 코딩 하면 좀 더 재미있지 않을까?

흔한 스터디 모집 사이트보다 좋을것같다.

2) 미라클모닝: 시대에 편승하는 어플이다. 예전에 아침형인간이 사회의 화두였다. 컨셉은 같다.

새벽에 생산적인 자기계발을 한다는 것인데, 이것도 스터디 모집류이기 때문에 패스.

3) 아파트 장터

여기에 많이 끌렸다. 문제는 사용대상과 활용의 문제가 있었다.

사용자는 아파트 주민인데, 아파트를 사용자 어디까지 한정할지(서울아파트, 부산아파트 등등).

매물 관리는 어떻게 할지 고민이 생겼다. 패스.

4) 개발자 스킬체크: 토이프로젝트는 다른 개발자들이 흥미를 끌만한 것이면 좋다.

컨셉은 매해 나오는 개발자 스킬 리스트를 바탕으로 자기점검 사이트 만들기이다.

리스트를 만들고 점수화 하자는 것인데, 다른 사람들도 관심 갖을만할 것같다.

사용할 기술을 고민해봤을 때 난이도가 너무 쉽다. 나의 성장에 도움이 되는 프로젝트일까. 일단 보류.

5) 클론코딩

클론코딩으로 커피 어플의 화면은 개발을 해둔게 있다. 누군가의 허락받고의 문제는 아닌 것같다.

없는 상품을 앱스토어에 올리는 것도 좀 아닌 것같다. 이번 토이프로젝트는 공개된 프로젝트로 만들고 싶다.

6) 만화책 중고사이트

만화책이 재미있어 구매를 하게되면 읽고나서가 문제다. 대부분은 몇번보다가 안본다.

이 경우 만화책을 중고로 파는 것을 고려한다.

하지만 만화책은 팔 만한 곳이 없다. 중고 장터의 한쪽 카테고리가 있긴한데

요즘 뜨는 당근마켓 같은 직거래 중고 사이트 하나정도는 있어도 되지않을까?

검색을 해보았는데 업자에게 맡기는 형식의 좀 올드한 사이트는 몇 개보였다.

커머스 형태의 만화책 직거래. 활성화된 것도 없지만 수요가 있다.

7) 온라인 과외 플렛폼

과외선생님 매칭 + 과제 + 화상기능. 비대면이 유행인 요즘 괜찮은 주제이다.

하지만 매칭 기능, Web RTC 기능. 필요한 기술을 고민했지만 너무 욕심이다.

8) MBTI 커뮤니티

최근에 MBTI가 혈액형만큼 사람들 이목을 끌고있다. 혈액형으로 보는 성격, 커뮤니티

매칭이 있었으니 MBTI로 해보는건 어떨까. MBTI 테스트는 어떻게 만들어야할까.

9) 겜큇리스트

지금 STEAM 라이브러리에 게임만 사두고 안해본 게임이 너무 많다.

STEAM 게임 정복하기 TODO리스트를 만들어보는 건 어떨까. API 연동만 잘되면 할만하지 않을까?

TODO 리스트에 게임기능, 게임스샷인증 이런것들을 붙이는것도 재미있을것같다.

키워드에 대한 정보 토이 프로젝트 주제

다음은 Bing에서 토이 프로젝트 주제 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 토이프로젝트를 아직도 안하고 있으시다구요? 그라믄~안돼~!!

  • #토이프로젝트
  • 사이드프로젝트
  • 팀플지옥
  • 필수

토이프로젝트를 #아직도 #안하고 #있으시다구요? #그라믄~안돼~!!


YouTube에서 토이 프로젝트 주제 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 토이프로젝트를 아직도 안하고 있으시다구요? 그라믄~안돼~!! | 토이 프로젝트 주제, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment