티스토리 뷰

지난 5주간 무엇을 했나?

5주간 쉼 없이 달려왔다. 내가 맨 처음에 개발자로 공부할 때의 느낌처럼 지난 5주간 많은 양의 지식을 머리에 밀어 넣었다.

그리고 몰입해서 코딩을 하고 피드백을 받고 다시 수정하는 과정을 진행했다.

 

1주차에는 TDD 방식으로 포인트 충전, 사용을 할 수 있는 간단한 API를 구현했다. API 자체는 간단했지만 ConcurrentHashMap을 이용해서 동시성을 제어하는 부분이 있었다. 1주차를 통해서 TDD 방식을 익히고, 테스트코드 작성하는 방법에 대해서 연습이 많이 되었다. 그래서 이것을 기반으로 이후 과제부터 테스트코드 작성이 한결 수월해졌다.

 

2주차에는 클린아키텍쳐 + 레이어드 아키텍쳐를 공부하고 과제로 특강신청 API를 개발했다.

 

3주차 ~ 5주차는 본격적으로 서버구현을 위해서 내달렸다. 콘서트 예약시스템에서 대기열을 구현하고, 동시성 프로그래밍을 하고, 심지어 레디스에 대해서 발표하기까지 했다. 아마 잠이 제일 부족했던 시기가 아닌가 싶다 ㅎㅎㅎ

 

그래도 5주간 서버구현에 힘쓰고 새로운 지식을 배운 것에 대해서 매우 만족을 하고 있다.

 

 

### 1. 문제 **(과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제)**

1) 이번주에 부딪혔던 문제는 동시성 제어 코드에서 테스트가 통과가 안된다는 점이다.

테스트가 진행되면 테스트가 안 끝나고 계속 멤도는 현상이 발생한다.

 

2) Request/Response 객체를 어느 레이어까지 사용해야 하는가에 대한 고민

 


### **2. 시도**

 

1) 동시성 테스트 문제 해결에 대한 시도

처음에는 좌석을 조회할 때 비관적 락이 걸린 것이 문제라고 생각했다. 왜냐하면 좌석을 조회하는 쿼리문이 콘서트, 콘서트스케쥴 테이블도

함께 조회하기 때문에 락이 전파되고, 이로 인해서 교착상태가 발생했다고 생각했다.

그래서 좌석 테이블만 조회하도록 비관적 락을 설정했음에도 테스트가 끝나지 않고 멤돌았다.

 

그러다가 로그를 찍어보니 좌석을 검증하는 클래스에 문제가 있는 것을 확인했다. 하지만 원인은 불분명

 

2) Request / Response 객체는 Controller <--> UseCase 레이어에서 사용하는 객체이다.

Request / Response 객체를 핵심 비즈니스 로직까지 사용하면 안된다.


### **3. 해결**

 

1) 아직 해결을 못했다. 허재 코치님께 풀리퀘스트로 의뢰했다.

2) 해결책으로 비즈니스 모델 내에서는 Entity를 사용하거나, 새로운 DTO를 만들어서 사용하는 것으로 리팩토링 예정.



### **4. 알게된 것**

1) 비관적 락말고도 낙관적 락을 적용하는게 오히려 쉽고 성능이 좋을수도 있다고 생각.

그래서 추후에 낙관적 락으로 변경해서 테스트 해볼 예정.

 

2) 레이어별로 사용해야 하는 데이터 전달 객체가 다르다는 것을 알았다.
---

### **Keep : 현재 만족하고 계속 유지할 부분**

1. 다른 사람의 소스코드를 참고하고, 모르는게 있으면 직접 물어보는 행동이 잘 하고 있다.

그리고 적극적으로 코치님들에게 물어보고 피드백을 얻고 있다.

결국 내가 잘 가고 있는지 확인하는 피드백이 제일 중요하기 때문에 질문은 매우 중요하다.

앞으로 코치님들과 주변 팀원들에게 적극적으로 물어보고 배우는 자세로 임하자.

 

2. 기한내에 무조건 끝낸다는 마음가짐

나중에 해야지 라는 생각을 없앴다. 이번주에 이것 못 끝내면 나중에도 못한다는 마음가짐으로 과제를 해결하고 있다.

독서실에서 피곤하기도 했지만, 그래도 이번주에 못 끝내면 나중에도 못 끝낸다는 생각으로 해당주차마다 최선을 다 하고 있다.

 

3. 나의 뇌피셜이나 습관이 아닌 새로운 지식을 계속 적용해보는 것

그동안 내가 알고 있는 뇌피셜, 습관들을 적용해서 개발하는게 아니라 코치님들이 알려준 방식을 그대로 적용해서

코드를 개선해나가고 있는 점이다. 애초에 여기에 배우려고 왔지, 나의 기존 관습대로 코딩하러 온게 아니기 때문에

배운 지식을 적극적으로 활용해보는 자세가 필요하다고 생각했다.



### **Problem : 개선이 필요하다고 생각하는 문제점**

1. 5주가 남았기 때문에 페이스 조절 필요

컨디션을 조절해가면서 해야 남은 5주를 무사히 마칠 수 있을거 같다.

하루 하루 컨디션 상태를 조절해가면서 하자.

 

2. 발제문, 멘토링 내용 복습하기

코딩에 파묻혀서 발제문과 멘토링 내용을 복기하고 적용해보는 시간이 더 필요하다.

아직 발제문에 대해서 내재화가 덜 되어서 이 부분 복습을 더 하자.

그리고 공부한 내용을 글로 남기자.

 

3. 블로그에 글을 남기자

앞으로 이력서와 면접을 보기 위한 자료로 쓸 것이기 때문에 글을 과제 통과하는 용도로 쓰지말고

제대로 생각하면서 쓰기.


### **Try : 문제점을 해결하기 위해 시도해야 할 것**

1. 이번주에는 무조건 일요일이 넘어가기 전에 배운 것 정리하고, 회고 하기

2. 트러블 슈팅, 콘서트 예약시스템 회고글 쓰기 - 일요일까지

3. 리팩토링 완료하기!!! - 일요일까지

P1.

사용 태그 #항해플러스 #항해99

 

 

 

 

 

 

 

 

댓글