Wecode - Project 3 (부트캠프) 87

Docker를 활용한 AWS 실습 [개념]

[참고자료] 만들면서 이해하는 도커(Docker) 이미지: 도커 이미지 빌드 원리와 OverlayFS 도커 이미지는 유니온 마운트 기술을 활용해 계층화된 레이어들로 구성되며, 도커 레지스트리를 사용해 쉽고 효율적인 공유를 가능하게 해줍니다. 이 글에서는 도커 이미지가 저장되는 방식과 www.44bits.io 1. 실습을 시작하기 전에 해당 실습은 AWS EC2와 RDS 생성 및 연결까지 준비되어 있어야 합니다. 또한 기본적인 AWS, Docker 개념 학습이 선행되어야 합니다. 기존에 EC2에서 **git clone** 을 통해 GitHub 에서 코드를 가져와서 배포를 했다면, 이번 실습에서는 Docker 컨테이너를 활용해 배포하겠습니다. 1-1. Docker 회원가입 소스 코드를 GitHub에서 관리하..

docker 세션 [개념, 명령어, docker file ]

docker는 hub에 가입하는 과정 필요 -> 사이트 들어가서 가입 무료 배포 버전, MS가 4조 주고 사려고 했음 1. 가상화 하기 전 운영 방식 2. 가상화 2-1. 하이퍼바이저 원도우 하나에 다른 os 깔아서 호스트가 관리하며 쓰는 것 - 각각의 os 해야 해서 불편해서 만든 거 -> os 를 가상화하지 말자, 서버만 별도로 os가 아니라, 돌아가고 있는 서버만 -> 속도 빠르게 가능 Docker 개념 윈도우에서는 되는데 맥에선 안 되고 서버 같은데 같은 코드인데 다른 사람 사람 코드에서는 안 되고 -> docker로 모든 사람들의 개발 환경을 똑같이 만듦 -> 똑같은 버전의 node가 설치된 걸 다운 받음 회사 가서도 자잘한 설치 없이 docker로 하면, 스펙/ 버전/ 메모리가 달라서 안 되는..

git cache [.gitignore에 있지만 repository에 올라간 파일 없애기]

이후에 파일 추가를 하는데 repository에 올라가면 안 되는 경우, 1. .gitignore에 추가를 한다 그냥 텍스트로 typing하면 된다 2. 그런데 이미 그 전에 git add. git commit을 해서 repository에 올라가 있다. git cache 를 해야 한다 깃허브에 올리면 안되는 정보는 .env 파일에 환경변수로 저장하고 .gitignore 에 등록해야 합니다. 이 부분을 깜빡해고 커밋 푸쉬를 했다면 git rebase 로 해당 커밋을 지워도 캐시가 남아서 지워줘야 함. 캐쉬 삭제 명렁어 git rm -r --cached . 다시 확인해보니 사라져있다.

Project 3- 마지막 standing meeting

상황 공유 1. 상세페이지 지도 api -> 위치 기반 서비스 -> 카카오맵 / 리뷰를 먼저 보여주고, 리랜더링 시켰을떄 지도 로딩 돼서 ui 변경 2. 외부결제 모듈 포트원 단건 결제 완료 3. 목요일 11시부터 코드 프리징을 24시간하기로 했었는데,/ 오후 11시까지 12시간 전 소스 프리징 (복수결제건 처리, 바로 결제건 처리, "리뷰/상품 관련된 사진" 축적) 4. 외부결제 후 바로구매 로직 -- 카테고리별 하고 싶은 상품 정해서, 해당하는 이미지 따 오고, 덤프 파일로 업로드 / 리뷰 축적만, 작성은 안하고, 이미지 - 카테고리 9개 각각 (한 카테고리 별 제품 15개) /이미지 넣는건 정진님 s3에 들어감 리소스 축적을 하기로. [이미지] 1. 카테고리 정하고 (총 카테고리 9개) 2. 사이트..

Project 3 - API document postman으로 작성하기 [개념]

백엔드는 해당 엔드포인트에 대한 최종 설명문인 API document를 작성 API 문서화 = 백엔드가 작성한 각각의 API 기능을 문제없이 사용하기 위해서, 개발자간 어떠한 구성 요소를 주고 받아야하는지 일목요연하게 정리하는 작업 API 기능정의서: 목적 / 의도 / 엔드포인트 / API별 필수 인자 등에 대한 세부 정보가, 개발자는 물론 일반 사용자 까지 모두 이해하기 쉬운 형식으로 구조화 직접적으로 타인과 소통해야만 하는 빈도를 확연히 줄여줄 수 있고, 그 결과 일의 능률을 높일 수, 기업 측면에서도 시간 및 비용의 효율 올릴 수 workspace를 만듦 여기 body에 적고 view documentation 로 들어가서 보면, 오른쪽에 목차 타고 들어가서 볼 수 있음 여기는 프론트에게 설명을 적는..

에러 핸들링 [개념] 1

일반적으로 Javascript 에서는 try-catch문과 throw를 이용하여 에러를 처리 에러 핸들링 미들웨어는 에러를 처리하기 위해 반복적으로 진행되는 코드를 모듈화하여 소프트웨어의 확장성과 생산성을 높이기 위해 사용 1. 에러 핸들링의 목적과 의의 1-1. 에러 핸들링 목적 개발자는 사용자가 서비스를 이용하는 동안 발생할 수 있는 에러를 미리 사전에 예측하여, 이용자의 사용 흐름이 막히지 않도록 유도해야합니다. 이런 과정을 에러 핸들링 그러나 에러 발생율이 0%인 서비스는 존재하지 않습니다. 따라서, 예외 상황이나 에러가 발생했을 때, 소프트웨어를 갑자기 종료하는 것 보다는 에러가 발생했음을 알리고, 곧 서비스가 정상적으로 구동될 것임을 안내하는 것이 좋습니다. 따라서, 이러한 에러 핸들링은 사용..

[깃허브 reset -- hard 에러 해결] git pull origin main 시 commit 남기라고 할 때

다음과 같은 에러 뜰 때: 여러 번 떴던 오류 깃허브 remote- main에 있는 commit과 내 로컬에 있는 main의 commit 내역의 차이가 있어서 그런 것. ( = 꼬인 것) 그래서 내가 해야 할 것은, 내 로컬 main에 있는 commit 내역과 깃허브 main에 있는 commit history를 비교해서, 같은 거 있는 거 까지 봐서, 그 상태 전으로 돌려놓고, 다시 지금 remote main을 pull 받아서 내 로컬 main을 최신화 시키면 됨 1. remote : main > commit history 와 나의 로컬: git main > git log 비교 그런데, git remote repository를 들어가면, 이전께 안 나온다. 그것은, 이전 페이지로 가야 하는 것. olde..

Project 3: [장바구니에 여러 products 담길 때], 주문/결제 api orderService.js

여태 만든 건 장바구니에 하나의 Product이 담긴다는 전제 하에, product id 로 req.body에 받고 데이터베이스에 넣었는데, 이제는 장바구니에 여러 products 를 넘어서 넘기는 거를 해야 한다. 이후 아래와 같이 수정됨. 여러 제품을 한번에 담는 거로. products에 배열로 담는데, 프론트에게 받는 값은 productId로 생각하면 됨 { "userId": 2, "totalPrice": 3000 , "shippingMethod" : "방문수령", "paymentId": 1, "products": [ {"productId": 1, "quantity" : 1}, {"productId": 2, "quantity" : 1} ] } 과정 router는 변함이 없고, orderDao도 데이..

Project 3 - [주문/결제 api] 에러 핸들링 코드 및 과정

3가지 에러 1. // 에러 핸들링: carts 에 담기지 않은 product를 주문할 때 -> productId 라서 for()안에 들어가야 함 const isProductInCarts = await orderDao.isProductInCarts(userId, productId); // await: userId, productId,(orderDetails의 ) quantity를 orderDao로 보내준다 console.log(isProductInCarts); if (productId !== isProductInCarts) { throw new Error('ordered productId is not in the carts'); } userId가 8인데 이 유저에 해당하는 게 carts 에 없다는 거 2..

Project 3 -[주문 api] unit test; test code 성공 (에러 핸들링 없이)

테스트 코드 작성 과정 아래 링크 참고하여, app.js를 app.js와 server.js로 분리하고 테스트용 dotenv파일 만들어 준다 (.env.test , .env.test.sample) Project 3: unit test, test code [실습] 0. app.js ,server.js 분리하기 1. test 폴더에 order.test로 만듦 2. test용 데이터베에스 만들기 _ connection_test create database [ ] 2. .env.test , .env.tests.sample 파일에 무조건 connection test database 데이터베이스 이름 pm-developer-justdoit.tistory.com (.env.test_.gitignore에 넣어주고) 그 ..