본문 바로가기

회고록 모음/코드숨-스프링 과정 회고록

[회고록] Spring 프로젝트 : 시티 캣 타로 / 1주차

코드숨 8주 학습을 마치고 나면, 9주차부터는 개인 프로젝트를 진행한다.

 

이번 회고록에서는 내가 처음에 프로젝트를 어떻게 구상했는지 그 흐름을 적어보고자 한다.

 


🤔 나는 어떤 프로젝트를 만들고 싶은가?

보통 포트폴리오용 개발자 프로젝트를 보면, 쇼핑몰이나 커뮤니티 형식이 많은 편이다.

나 또한 그 형식이 배운 내용을 적절하게 구현해보기 좋다고 생각한다.

 

하지만 예전에 종립 트레이너님께서 너무 입사지원용 티가 나는 포트폴리오보다는

내가 실제로 사용하기 위해 만든 포트폴리오면 더 좋다는 말씀을 해주신 것이 기억났다.

 

그렇다면 나도 재미있게 쓸 수 있고, 친구에게도 써보라고 할 수 있는 그런 프로젝트가 뭐가 있을까....

 

최근에 관심을 가진 타로카드가 생각났다.

재미로만 보는 거긴 한데..... 호기심에 한 번 배워보고 싶어서 강의까지 듣고 카드도 구매했다. 

(실제로 남에게 타로카드를 본 적은 단 한 번도 없다는 함정;;)

 

 

실제로 내가 구입한 타로 카드

 

 

그럼 간단한 '오늘의 운세와 같은 내용을 타로카드로 풀어가면 어떨까?' 하는 생각에 이르렀다.

더불어 '썸 타고 있는 사람과 잘 될 수 있을까?' 라는 주제도 재미있겠다 싶어서 여유가 된다면 구현하고 싶었다.

 

일단 누군가로 하여금 '이 프로젝트는 뭘까? 타로카드를 어떻게 활용했으려나?' 하는 궁금증을 자아내게 하는 게 첫 번째 목표다.

 

 

 


그렇다면 어떻게 구성해볼까?

 

[ 형식 ]  

카드를 쫙 펼쳐서 보여주고, 사용자가 하나의 카드를 고르면 그에 대한 결과를 보여주는게 일반적이다.

그런데... 좀 더 소통하면서 타로카드 리딩을 하는 느낌을 줘도 좋겠다 싶었다.

 

그러면 대화 형식으로 어떤 봇이 나와서 말을 걸고 타로카드 리딩을 해주면 어떨까?

실제로 오마주 할만한 프로그램이 이미 있었고, 참고해서 구현을 하기로 했다.

실제로 채팅 기능을 구현한다기 보다는, 채팅한다는 느낌을 주고 싶었다.

 

 

[ 대화 화면 예시 ]

 

 

만약에 이대로 구현이 잘 안 된다면....

다소 평범하긴 하지만 카드를 한 장 고르면

바로 이어서 카드에 대한 풀이를 보여주는 형식으로 가게 될 것 같다.

 

사실 오늘의 운세를 볼 때 회원가입이 꼭 있어야 하는 건 아닌데,

'타로 결과 보관함' 기능도 만들고 싶기 때문에

회원가입/수정/탈퇴/로그인도 최대한 구현해 보려고 한다.

 

 

[ 일종의 브랜딩...? ]

그러면 채팅창에 등장하는 봇은 어떤 동물로 하면 좋을까?

이 프로젝트의 분위기를 좌지우지할 수 있는 부분이기 때문에 선정하는데 고민이 되었다.

 

실제로 후보에 올랐던 동물은 다음과 같다.

 

 

날다람쥐, 유니콘, 사막여우 등등....

 

하지만 최종으로는 고양이가 선정되었다. 타로카드의 분위기와 제일 잘 어울려서....

 

 

사실 내가 메인으로 가져가는 부분은 서버 개발이긴 한데....

보기 좋은 떡이 먹기 좋다고 하지 않나?

전반적인 색감이나 분위기를 이런 시티팝 느낌으로 가져가고 싶었다. (개인적으로 시티팝 느낌을  좋아한다.)

 

이 분위기를 이어 프로젝트 이름도 "city cat tarot(시티 캣 타로)"로 최종 확정!

 

http://www.kabrew.co.kr/contactus/kabrew_news?tpf=board/view&board_code=13&code=116

 

하지만 이는 나의 바램일 뿐... 과연 이대로 디자인될 수 있을 것인가... 모르겠음...

일단 계획은 세워본다.

 

 


 

본격적인 프로젝트 시작 전에 계획을 미리 세우고 시작을 하는 게 좋으니...

REST API를 한 번 미리 짜봤다.

 

app.gitbook.com/@developerolive/s/city-cat-tarot-api/~/drafts/-MWnmTsTsSKNDl8yGZsU/city-cat-tarot

 

뭔가 머릿속에 아직 다 안 그려져서 그런지 REST API를 미리 짜는 게 그렇게 쉽진 않았다.

실제로 구현하면서 수정할 부분이 생길 수도 있겠다.

 


어후... 근데 왜 이렇게 망망대해 같지? 😰😩

 

하얀 도화지에 그림을 처음 그릴 때의 느낌처럼...

'처음에 뭘 해야 하지?' 하고 약간 멍한 시간이 있었다.

 

게다가 코드숨에서 제공하는 리포지토리를 fork한 후 작업을 해야 한다는 것을 처음에 인지하지 못해서

내가 프로젝트를 따로 만들어서 시작하고 있었다.

에휴.....ㅋㅋ 

 

그런데 오히려 이렇게 파일이 2개가 생기니 

미리 내가 따로 생성한 프로젝트는 테스트용으로 이것저것 도전해보기 좋았다.

본 프로젝트 파일에 이것저것 도전하다가 파일이 망가질 수도 있기 때문에.....

오...약간의 전화위복 느낌?

 

 


이번 프로젝트의 경우, 프론트엔드를 좀 할 줄 아는 친구와 같이 협업을 해볼 예정이다.

협업 경험이 없어서 일부러 이 방법을 택했다.

 

그렇기 때문에 프론트엔드가 작업을 할 수 있게 AWS를 이용한 배포를 먼저 하는 것이 첫 번째 과제였다.

8주차에 배운 docker를 사용해서 배포를 해야 하는데

익숙지 않고 처음 보는 것이 많아서 고뇌의 시간을 오랫동안 보냈다.

 

[ 삽질의 향연 ]

중간에 docker 모르고 다 리셋해 버리고;; 

docker 명령어 쳤는데 너 뭐 잘못 입력했다고, 안 된다고 안 된다고~~ 외쳐대는 터미널 창과의 싸움....

docker Hub에 잘 올라간겨 안 올라간겨... 

tag 붙이는 명령어 썼는데 왜 안 붙여지는겨....

실패를 해버리는 덕에 하도 명령어를 쳐서 그런지 docker 명령어가 이제 익숙해지는구만^^

알고 나니 그렇게 어려운 게 아니었지만 알기까지 고뇌가 많은 편;;

 

겨우 docker에 내 Spring 프로젝트와 mariadb 올리기는 성공했고 AWS EC2랑은 어떻게 연결해야 하는겨?

아 먼저 AWS에 인스턴스를 생성해야겠구만.

아 근데 인스턴스 리전을 서울로 해야 하는데 오하이오에 해버렸죠? 지우고 다시 만들었죠?

ssh 접속 세팅도 하고...pem 키.. 오케이... 

아 이놈의 권한 문제;;;;

막판에 권한 문제가 날 괴롭혔는데 외국인 유튜버님이 설명하신 IAM Role로 해결을 하고.... 

EC2에서 docker image pull 해와서 드디어 서버 실행은 성공.... 

 

아,,, mariadb도 실행시켜야 하지...

아니 잠깐, 3306 포트를 AWS에서 열어주지도 않고 뭐하는겨~

열었습니다... 그리고 docker에서 mariadb pull해서 실행해 보는데 500에러...

로그를 읽어봐 이 사람아....

씨름 끝에 datasource url에 문제가 있음을 의심해보게 되고

일단 workbench로 로컬에서 먼저 실행을 해보자....

안 되네?

ㅎㅎ 뭐가 문제야..... 또 씨름....

hostname에 들어가는 ip가 문제였구만 ㅠㅠㅠㅠ

오 드디어 EC2 서버에서 mariadb도 실행됐어..

근데 왜 정보를 죄다 null로 불러와?

 

 

workbench에서는 잘 불러오는데! 또 뭐가 문제니?

db를 h2로 연결했을 때는 잘 불러오는데,

mariadb로 연결하면 다 null로 불러온다라....

그럼 db 맵핑이 잘못된 거 아녀? 냄새가 나.....

 

db 칼럼명을 cardId와 같이 카멜 기법으로 만들었는데, card_id와 같은 스네이크 기법으로 수정하니 잘 불러온다...

JPA에 대한 공부가 더 많이 필요한데 급한 불 끄기에 바쁘구나.

 

 

그러다 문득 AWS 서비스 요금 설마 안 나왔겠지? 싶어서 확인해봤다.

(까딱하단 AWS에서 과금이 많이 될 수 있다고 주워 들었던 것이 생각남.)

0.53 달라 나왔네. 원래 이 정도는 계속 발생하는 건가?

어라 근데 왜 지역이 ohio?

아;; ohio 인스턴스 삭제 안 됐나 보네. 탄력적 ip를 만들어놓고 연결을 안 하면 과금된다던데.....ㅎㅎㅎ 당장 삭제.

 


✍🏻 총평

1주차는 docker 그리고 AWS와 한층 가까워지는 시간이었다. 

 

1주차 때 세팅과 배포에 많은 시간을 보냈으므로,

2주차부터는 서비스의 비즈니스 로직 구현에 집중해야 한다.