호비시의 끄적끄적

실전프로젝트 3주차 회고 본문

스파르타

실전프로젝트 3주차 회고

호비시 2022. 5. 31. 10:18

2022년 4월 22일 부터 실전 프로젝트를 시작했지만, 바쁘다는 핑계로 조금 늦게적는 3주차 회고

 

5/7 ~ 5/13

MVP 기능을 완성해야하는 한 주였다.

MVP 기능으로 가져간 것은 다음과 같았다.

0. 로그인 / 회원가입

1. 유저의 권한 부여

2. 팀 생성

3. 팀원 추가

4. 팀 보드 게시판

5. 채팅

 

나는 채팅을 맡게 되었다. 프론트 엔드 한 분이 나가면서 채팅을 백 / 프론트 둘 다 혼자서 해결해야하는 상황이었다.

채팅을 쓰면서 websocket에 대해 알아야 했고, websocket을 더 잘 사용하기 위해 redis의 pub/sub 기능을 사용했다.

 

처음 겪은 문제는 cors 문제였다. 프론트엔드에서 subscribe 엔드포인트에 요청을 보내도 cors 오류로 연결이 되지 않았다.

	@Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws-stomp").setAllowedOriginPatterns("*")
                .withSockJS();
    }

setAllowedOrigin 이었던 코드를 setAllowedOriginPatterns로 수정하니 해결되었다. 

 

그 후 redis를 이용하여 sub/pub 을 구현하려 하였다. 많은 선택지가 있었지만, AWS에서 제공하는 ElastiCache를 사용하기로 했다. ElastiCache를 사용한 이유는 다음과 같다.

 

1. 모니터링이 편하다.

Embedded Redis를 사용할 수 도 있었지만, ElastiCache에서 제공하는 모니터링이 매우 편리하다고 느꼈다. 

Embedded Redis를 사용한다면 직접 redis에 접속해 명령어들을 쳐야 볼 수 있는 것들을 AWS에서는 한눈에 보여주기 ㄸ문이었다.

 

2. 유지 보수가 편하다.

모니터링을 통해 CPU사용량이나 메모리 사용률이 redis가 못버틸 정도로 높아진다면 메모리를 늘려야 할것이다. AWS에서는 클릭 몇번으로 노드 유형을 변경하여 메모리의 크기를 크게 변경할 수 있다. (물론 돈이 좀 들지만) 또한 백업도 자동으로 설정 할 수 있기 때문에 유지보수가 매우 편하다는 장점이 있다.

 

장점은 다음과 같았으나 단점 또한 있었다.

1. 돈이 든다.

AWS의 철학 지불한 금액만큼 성능을 지원해주기 때문에 돈이 좀 들 수밖에 없다. 현재 프리티어를 사용중이라 돈을 지불하진 않지만, 메모리의 사용이 늘어나 메모리의 크기를 늘려야 한다면, 추가적인 요금은 불가피할 것이다.

 

2. 로컬에서 힘든 테스트

AWS의 ElastiCache는 로컬에서 테스트를 할 수 없었다. 나의 지식이 부족했던 점도 있겠지만, 로컬에서 redis를 연결하여 run을 하게 되면 ElastiCache에 연결할 수 없다는 에러 메시지가 뜬다. EC2 서버에 올리고 run을 해야만 redis가 연결되는 불편함이 있었다.

 

하지만 단점보다는 장점이 컸기 때문에 ElastiCache를 사용했고 만족하고 있다.

 

MVP 개발을 끝내기 직전 주차와 팀을 추가하는 과정에서 DB를 분리해야하는 일이 벌어졌다. 원래는 주차, 팀명을 동시에 입력 받고 추가하는데 UI상 직관성이 떨어졌고, 사용자가 보는 체크인 페이지에 display 할 주차를 설정해 주어야 하는데 이 부분에 있어서 기존 방식으로는 힘들다고 판단해 db를 쪼개기로 했다.

Comments