728x90
반응형
이제는 실전이다!
2주간 미니프로젝트와 클론프로젝트를 진행하면서 협업을 하며 팀원과의 원활한 소통을 하는 방법에 대해 많이 배운 것 같다. 기술적으로는 사실상 그간 배운 것을 다지고 응용하는 수준이었고 새로운 것을 많이 해보지 못해 아쉬운 점은 있었지만, 나름대로의 도전적인 과제를 만들고 풀어나가는 동안 나름의 재미를 많이 느꼈었다.
// users service 코드 중 일부, 싸이월드 방문자 수 카운트
todayTotal = async (req, res, next) => {
// 현재 사용중인 유저의 ip를 가져온다.
const ipAdress = req.ip.split(':').pop();
const { userId } = req.params;
const findByUser = await this.usersRepositories.findByUser(userId);
if (!findByUser) throw new Error('존재하지 않는 미니홈피 입니다.');
const time = Date.now();
// 중복된 아이피가 있는지 검증하기위해 repository 요청
const existIp = await this.usersRepositories.todayTotalCheck({
ip: ipAdress,
userId,
});
// 중복된 아이피가 없으면 DB에 추가
if (!existIp)
return await this.usersRepositories.createTodayTotal({
userId,
ip: ipAdress,
time,
});
// 이전 조회수 업데이트 날짜와 현재 날짜가 다를경우 today는 1로 초기화, total +1
// 구현되는 것을 확인하기 위해 1분마다 today 초기화
// const day = new Date() + '';
// const myhomeDay = existIp.updatedAt + '';
// const intervalDay = day.split(':')[1] - myhomeDay.split(':')[1] === 0;
// if (!intervalDay)
// return await this.usersRepositories.newTodayTotal({
// ip: ipAdress,
// time,
// userId,
// });
// 조회수를 무작정 올리는것을 방지하기 위한 5초 간격
const intervalCount = time.toString() - existIp.time > 5000;
// 조회수를 올린지 5초가 지났으면 조회수 요청 및 시간 업데이트 요청
if (intervalCount)
await this.usersRepositories.todayTotalCount({
ip: ipAdress,
time,
userId,
});
};
실전프로젝트 3일 차
사실 백엔드반을 지원하면서 많은 고민도 했고 사실상 지금까지도 내가 잘 해낼 수 있을까 라는 의문이 계속 들고 있지만 그런 고민이 생각나는 시간조차 앞으로 어떻게 하면 프로젝트를 완성시킬 수 있을지 하나라도 더 알아보고 공부하고 해봐야 한다고 다시금 마음을 계속 다잡아가며 할 생각이다.
이번 프로젝트는 지금 백엔드반에서는 우리 팀뿐이고, 이전에 먼저 진행되었던 백엔드반에도 없었고, 실전 프로젝트 통틀어서 손에 꼽는 게임 프로젝트인데, 사실 SA때부터 왠지 모르게 나만 콘셉트에 대한 이해도가 많이 부족한 거 같아 헤매고 있는 건 아닌지 너무 걱정스럽다.
앞으로 중요한 과제
- docker, dockerhub
- kubernetes
- MSA
- TypeScript
- HTML, CSS
- GitHub Action
- Elastic Load Balensing?
728x90
반응형