clone toy projects 썸네일형 리스트형 entity 생성하기 전체적인 ERD npm install bcryptjs class-validator class-transformer --save npm install @types/bcryptjs --save-dev Base Entity 생서 모든 엔티티에 id, createdAt,updatedAt이 필요하다. 그래서 공통 요소를 상속받아 다른 엔티티를 생성 User Entity 생성하기 Subs Entity 생성하기 @JoinColumn() - @JoinColumn을 통해서 어떤 관계쪽이 외래 키(Foreign Key)를 가지고 있는지 나타낸다. - @JoinColumn을 설정하면 데이터베이스에 propertyName + referencedColumnName이라는 열이 자동으로 생성. - 이 데코레이터는 @ManyToOn.. 더보기 프로젝트 세팅 https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%8A%94-%EB%A0%88%EB%94%A7/dashboard 따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS) - 인프런 | 강의 이 강의를 통해서 레딧 웹사이트를 처음부터 하나하나 만들어 보실 수 있습니다., NextJS, Typescript, ExpressJS, Postgres가장 핫한 풀스택 조합으로 레딧을 클론코딩해요! 👨💻 이 강의에서는?[사진] www.inflearn.com Next.js, nod-exoress, typeorm, postgres,docker의 전반적인 흐름을 파악하기 위한 클론 코딩 NextJS Typescript를 이용한 ᄑ.. 더보기 AWS 람다 사용하기 이번에는 S3에 올린 이미지를 리사이징한 후 줄어든 이미지를 다시 S3에 저장해보겠습니다. 사용자가 사이즈가 너무 큰 이미지를 올렸을 경우, 적절한 크기와 용량으로 이미지를 변경하는 것입니다. 이미지 리사이징은 CPU를 많이 사용하는 작업이어서 람다로 분리했습니다. nodebird 폴더 외부에 aws-upload 폴더를 만든 후 package.json을 작성합니다. handler 함수가 람다 호출 시 실행되는 함수입니다. 매개변수로 event와 context, callback이 주어집니다. event는 호출 상황에 대한 정보가 담겨 있고, context는 실행되는 함수 환경에 대한 정보가 담겨 있습니다. 직접 console.log해서 어떠한 정보들이 들어 있는지 확인해보는 것이 좋습니다. callback.. 더보기 AWS S3 사용하기 이 장에서는 서버리스 아키텍처와 노드를 함께 사용하는 방법을 소개합니다. 이미지를 업로드한 후, 리사이징해서 클라우드 저장소에 업로드할 것입니다. 선호하는 클라우드 서비스에 따라 16.2절(AWS)이나 16.4절(GCP) 중 하나를 선택해서 진행하면 됩니다. 서버리스 이해하기 서버리스는 영어로 ‘serverless’입니다. ‘server(서버)+less(없는)’이지만, 사실 서버가 없는 것은 아닙니다. 서버를 클라우드 서비스가 대신 관리해주므로 개발자나 운영자가 서버를 관리하는 데 드는 부담이 줄어든다는 의미입니다. 즉, 개발자는 자신의 서비스 로직을 작성하는 데만 집중할 수 있게 되는 것입니다. 서버리스 컴퓨팅을 할 때는 이전 장의 AWS EC2나 구글 컴퓨트 엔진(Google Compute Engin.. 더보기 AWS light sail 사용해서 배포하기 aws의 light sail 로 들어가서 create instance 클릭 인스턴스 위치 선택 화면에서 원하는 지역을 고릅니다. 기본적으로 서울이 선택되어 있는데, 여러분의 위치와 가까울수록 속도에 이점이 있습니다. 블루프린트는 노드를 선택하면 됩니다. 인스턴스 화면에 나오는 퍼블릭 IP에 브라우저로 접근하면 Congratulations! 화면이 뜹니다. 기본적으로 비트나미(Bitnami) 서버가 실행되고 있는데, 이 서버를 종료하고 우리의 NodeBird 서버를 띄울 예정입니다. 인스턴스 화면에서 Connect using SSH(SSH를 사용하여 연결) 버튼을 누릅니다. 브라우저 새 창에서 Lightsail용 콘솔이 실행됩니다. 이제 이 SSH를 사용해 명령어를 입력합니다. 이 SSH는 Lightsai.. 더보기 서비스 운영을 위한 패키지[redis, nvm] connect-redis 멀티 프로세스 간 세션 공유를 위해 레디스와 익스프레스를 연결해주는 패키지입니다. 기존에는 로그인할 때 express-session의 세션 아이디와 실제 사용자 정보가 메모리에 저장됩니다. 따라서 서버가 종료되어 메모리가 날아가면 접속자들의 로그인이 모두 풀려버립니다. 또한, Warning: connect.session() MemoryStore is not designed for a production environment, as it will leak memory, and will not scale past a single process라는 경고 메시지도 발생합니다. 이를 해결하기 위해 세션 아이디와 실제 사용자 정보를 데이터베이스에 저장합니다. 이때 사용하는 데이터베이스가 레.. 더보기 서비스 운영을 위한 패키지[pm2, winston, helmet, hpp] pm2 이 패키지는 ‘개발할 때 nodemon을 쓴다면, 배포할 때는 pm2를 쓴다’는 말이 있을 정도로 유용합니다. 가장 큰 기능은 서버가 에러로 인해 꺼졌을 때 서버를 다시 켜주는 것입니다. 또 하나 중요한 기능은 바로 멀티 프로세싱입니다. 멀티 스레딩은 아니지만 멀티 프로세싱을 지원해 노드 프로세스 개수를 한 개 이상으로 늘릴 수 있습니다. 기본적으로는 CPU 코어를 하나만 사용하는데, pm2를 사용해서 프로세스를 여러 개 만들면 다른 코어들까지 사용할 수 있습니다. 클라이언트로부터 요청이 올 때 알아서 요청을 여러 노드 프로세스에 고르게 분배합니다. 그럼 하나의 프로세스가 받는 부하가 적어지므로 서비스를 더 원활하게 운영할 수 있습니다. 단점도 있습니다. 멀티 스레딩이 아니므로 서버의 메모리 같은.. 더보기 서비스 운영을 위한 패키지[morgan,express-session,시퀄라이즈,cross-env, sanitize-html, csurf] 지금까지는 서버 개발을 localhost에서 진행했습니다. 별다른 설정 없이 서버 작업 결과를 볼 수 있어 편리하긴 하지만, 혼자만 볼 수 있다는 문제가 있습니다. 배포시에는 다른 사람이 사용하는 서비스이므로 개발 환경과 동일하게 진행할 수는 없습니다. 서버도 멈추지 않게 유지해야 하고, 에러 내역도 관리해야 합니다. 또한, 각종 보안 위협에도 대처해야 합니다. 이러한 작업을 쉽게 해주는 패키지도 알아볼 것입니다. morgan과 express-session 현재 익스프레스 미들웨어 중 일부가 개발용으로 설정되어 있습니다. 이 미들웨어들을 배포용으로 설정할 것입니다. process.env.NODE_ENV는 배포 환경인지 개발 환경인지를 판단할 수 있는 환경 변수입니다. 저는 주로 배포 환경일 때는 morg.. 더보기 이전 1 2 3 4 5 ··· 8 다음