[WIL] Week 15

김주희·2023년 8월 27일
0

WIL

목록 보기
15/17

1. FACTS

  • 최종 프로젝트 백엔드 진행 : 추억을 공유하는 커뮤니티 (마이크로 서비스 아키텍처)

2. FEELINGS

  • 다들 열심히 하는 팀원들이 모여서 의견 조율 하는 시간이 종종 필요했다. 그래도 2주차에 접어들어서 그런지 지난주보다는 의견이 잘 모아지고 있다.

3. FINDINGS

  • MSA로 개발을 하는데 팀원들과 다시 협의를 해야할 사항이 있었다. DB도 분리를 하느냐 하지 않느냐에 대한 것이었는데, DB분리를 하지 않는다면 다른 서비스의 데이터를 호출 처리 하지 않고 진행할 수 있었다. 하지만 프로젝트의 난이도가 너무 낮아지기 때문에 우리가 도전하는데 의의가 조금 없어지는게 아닐까란 의문도 들었었다.
  • DB를 분리 하지 않는다면 겪게 되는 문제가 무엇일까에 대해 팀원들과 얘기를 하다가 방향성이 잡히게 되었다. DB의 수정이 있다고 했을때, (그럴 가능성이 낮긴 하지만) 같은 DB를 사용했기 때문에 모든 API의 동작이 이뤄지지 않는다는 점을 파악하게 되었다. 여기서 DB를 나누고 단순히 그걸 import를 한 경우도 수정하고 있는 DB를 import로 사용하고 있는 서비스들의 코드들도 수정해야하는 경우가 생긴다는 것도 팀원 모두가 이해하게 되었다.
  • 게시글 조회시 게시글을 작성한 사람의 닉네임을 호출 처리를 통해 가지고 오고 있다. 하지만 비동기처리를 해주지 않았기 때문에 초반에 우리가 지정해놓은 310라는 서버 오류 코드가 떴다.
// 수정 전
const { pageNum } = params.query;
const result = await Posts.findAll({
  order: [['createdAt', 'DESC']],
  limit: 10,
  offset: (pageNum - 1) * 10,
  raw: true,
});

const userId = result.map((post) => post.userId);

postModule.connectToAllUsers(
  process.env.HOST,
  process.env.USERS_PORT,
  (data) => {
    postModule.nickname = data;
    resolve();
  },
  userId,
);

const bodies = postModule.nickname.responseData.bodies;

responseData = result.map((post) => {
  const nickname = bodies.filter((nickname) => nickname.userId == post.userId);
  return { ...post, nickname: nickname[0].nickname };
});

// 수정 후
const { pageNum } = params.query;
const result = await Posts.findAll({
  order: [['createdAt', 'DESC']],
  limit: 10,
  offset: (pageNum - 1) * 10,
  raw: true,
});

const userId = result.map((post) => post.userId);

await new Promise((resolve, reject) => {
  postModule.connectToAllUsers(
    process.env.HOST,
    process.env.USERS_PORT,
    (data) => {
      postModule.nickname = data;
      resolve();
    },
    userId,
  );
});

const bodies = postModule.nickname.responseData.bodies;

responseData = result.map((post) => {
  const nickname = bodies.filter((nickname) => nickname.userId == post.userId);
  return { ...post, nickname: nickname[0].nickname };
});

4. FUTURE

  • 지금 추가 수정이 필요한 부분이 전체적으로 에러 코드 정리 부분이랑 유저 서버가 꺼졌을때, 게시글 조회부분에서 닉네임을 빼고 나머지 부분은 조회되도록 하는 것이다.
profile
꾸준히 하자

0개의 댓글