항해 플러스 백엔드 WIL (1주차 회고)

이선주·2024년 6월 22일
0

항해플러스5기

목록 보기
2/8
post-thumbnail

1. 이번 주차에 겪었던 문제

과제에 대한 부분

과제는 그렇게 어렵지 않았지만, 코드리뷰를 받으며 아직까지 많이 부족하다는 것을 알았다. 가령, 동시성 제어를 위해 코드 레벨에서 Promise를 이용하여 이벤트 루프를 Lock하는 방식을 택했다.

let mutex = Promise.resolve();

function Transactional(callback: any) {
  mutex = async () => {
    await callback();
  };
}

데코레이터로 서비스 클래스의 각 메서드마다 호출에 따른 우선순위를 부여하는 방식이다. 이 방식에 대해서 코치님은 '서로 다른 사용자가 요청을 보내도 경쟁 조건이 생길 수 있다. 이 문제에 대해서 생각해보는 것은 어떨까?' 라는 의견을 주셨다.

이러한 리뷰 덕분에 아직 내가 보지 못하는 부분이 많다는 것을 깨달았다.

문제 해결을 위한 시도

코드 리뷰를 받은지 얼마 되지 않아 아직까지 시도 하지는 않았다.

하지만, 이번 피어 리뷰 시간에 여러 해결 방법에 대해 이야기 해보았다.

(시도해보고 싶은 방법은 이벤트를 통한 동시성을 제어하는 것이다.)

알게된 것

문제를 해결하기 위해 Promise를 통한 Lock에 대해 알았다. 아직까지 연구를 더 해봐야 겠지만 대략적으로 JavaScript의 이벤트 루프에 대해서 조금이나마 이해했다.

특히 Promise 객체가 동시에 실행되었을 때 외부에서 Promise.resolve() 객체를 확용한 이벤트 루프 Lock에 대해 알 수 있었다.

profile
백엔드 개발자의 기초 다지기

0개의 댓글