본문 바로가기

nodejs

끝판왕의 프로젝트_Node.js 펫시터 프로젝트 만들기 # 들어가며 다시 팀프로젝트가 시작되었다. 이번에는 2가지의 주제 중 하나를 선택하여 서비스를 구현하는 프로젝트인데, 두 가지 주제 중 펫시터 프로그램 프로젝트를 진행하기로 하였다. 자유주제가 아니라서 따로 어떤 서비스를 만들 것인가에 대한 거시적인 질문을 하지 않아도 되지만 세부적인 서비스 기획은 필요했다. 이번 포스팅에서는 관련한 내용을 정리하고자 한다. # 서비스 기획 우리가 만드는 펫시터 서비스는 어떤 서비스 일지에 대한 고민이 있었고 아래와 같은 결론을 내렸다. 1) User 정의 - 일반 유저(End-user) : 해당 서비스를 통해서 본인의 반려동물을 펫시터에게 의뢰하고 비용을 지불하는 사람 - 펫시터 : 펫시터의 계층으로 다른 사람의 반려동물을 맡아서 케어해주고 그에 대한 댓가로 비용을 받.. 더보기
Node.js_트랜잭션 (Transaction) [간단 요약 !] 1. 트랜잭션이란? - 작업의 완전성을 보장해주기 위해 특정한 작업을 전부 처리하거나, 전부 실패하게 만들어 일관성을 보장해주는 기능 - 여러개의 작업(쿼리)를 하나의 작업 단위로 묶어서 처리 2. 왜 ? 은행의 결제 시스템, 영화 예매 시스템 등 부분 업데이트가 되면 안되는 상황 즉 데이터의 일관성을 유지해야하는 상황에서 사용 3. 트랜잭션의 특징 ACID ! - 원자성(Atomicity) : 묶음 처리한 작업이 전부 성공하거나 실패해야한다는 특징 (나눠질 수 없는 단일 작업) - 일관성(Consistency) : 트랜잭션 내부에서 처리되는 데이터의 일관성을 유지해야하는 특징 (실패한 상태로 데이터 방지 X) - 격리성(Isolation) : 실행중인 경우 다른 트랜잭션에 의해 데이터.. 더보기
Node.js_AccessToken / RefreshToken ~ #0. 들어가며 우리는 앞서 로그인 기능을 구현할 때 jwt토큰을 만들고 쿠키에 넣어 클라이언트에게 전달했다.(res) 바로 그 토큰을 Access Token이라고 할 수 있는데, 여기서 액세스 토큰을 탈취당했을 경우 보안 상 취약한 경우가 많다. (해당 토큰이 있다면 실제 로그인 한 사람이 아니더라도 그 사람의 정보에 접근할 수 있기 때문에) 해당 문제를 해결하기 위해 여러가지 방법이 있겠지만, 액세스 토큰의 만료기간을 짧게두어 액세스 토큰을 탈취당하더라도 피해를 최소화하는 방법이 있다. 그렇다면 ! 만료기간이 지날 때마다 액세스 토큰을 발급 받기 위해 로그인을 해야할까? 가능은 하지만 유저에게 불편함을 줄 수 있기 때문에 리프레시 토큰(Refresh Token)이란 것을 활용한다. 보안을 위해 액세스.. 더보기
Node.js_회원가입 구현하기 사실 먼저 로그인 기능에 대해 정리를 했는데 회원가입을 먼저 했어야하나.. 싶었다. 회원가입에 대해서는 크게 어려운 부분이 없다고 생각하기에 늦게나마 정리한다 ! [회원가입 기능의 간단한 로직] 1. 클라이언트가 회원가입 화면에서 필요한 정보를 입력한다. ** 입력받을 정보 ! - email - userName - password (6자 이상) -confirmPassword 2. 입력된 정보가 설정한 양식에 맞지 않을 경우 에러를 반환한다. 3. 입력된 정보를 정확하게 입력하였을 경우 Users 테이블에 저장한다. ** 저장 시 비밀번호는 해시된 상태로 저장해보기 ! 구현하기 전 초기 세팅은 아래와 같다. 1) express 프레임 워크 사용 2) Users라는 데이터 테이블 구축 (데이터 베이스는 어떤.. 더보기
Node.js_로그인 기능 구현하기 앞서 정리한 쿠키, 세션, jwt토큰을 정리했는데, 관련 내용을 활용하여 로그인 기능을 간단하게 구현해보도록 하겠다 ! (물론 실제 로그인 기능은 훨씬 고도화되겠지만 간단한게 체험한다는 느낌으로다가 ~) [로그인 기능의 간단한 로직 !] 1. 클라이언트가 email과 password를 body에서 입력한다. 2. 입력받은 정보를 DB에서 찾아 일치할 경우 인증 토큰을 보내준다. 3. 토큰을 보유 여부를 확인하여 보유하지 않고 있으면 다시 로그인을 요청한다. 구현할 때 초기 세팅은 아래와 같다. 1) express 프레임 워크 사용 2) Users라는 모델이 구축하여 user데이터 저장 3) Users 모델에는 아래와 같은 컬럼을 가진다. - userId - userName - email - passwo.. 더보기
끝판왕의 프로젝트_Node.js 뉴스피드 만들기_팀 프로젝트(Sparta Folio) 본격적인 준비가 끝난 후 팀장님께서 깃에 스켈레톤 코드를 만들어주셔서 그것을 활용하며 프로젝트를 진행했다 ! 프로젝트를 진행하며 약간의 문제 !? 아닌 문제를 위주로 진행하고자 한다 ! # Sequelize 를 ES module로 사용하고 싶어요 ! # 배경 1) 사용하는 DB 종류 ! 우리는 MySQL을(관계형 데이터 베이스) 사용하기로 했는데 그 이유는 우리가 만들고자 하는 서비스의 주된 목적은 프로젝트를 올리고 댓글을 통해 의견을 받는 것이기 때문에 회원과 프로젝트, 회원과 댓글, 프로젝트와 댓글 등 관계가 정해져있어 명확한 스키마가 있어야 할 것이라고 판단했다. (참고 : https://ittrue.tistory.com/195) 2) Sequelize ! 자바스크립트 구문을 알아서 SQL 구문으로.. 더보기
끝판왕의 프로젝트_Node.js 뉴스피드 만들기_팀프로젝트 # 들어가며.. Node.js에서 express 프레임워크를 이용한 서버구축에 대한 실습이 지난 과제로 끝나고 본격적인 팀 과제가 진행되었다. 가장 큰 목표는 '뉴스피드 만들기' 즉 기존에 실습한 CRUD의 결정체라고 할 수 있겠다 !! # 해야할 것 1. 서비스 기획 - 문제 정의 - 해결 방안 2. 프로젝트 준비 - S.A작성 - 와이어 프레임 구상 - API 명세서 작성 - ERD 작성 - Git repository 생성 및 연결 # 1. 서비스 기획 1) 주제 선정 서비스의 방향성을 잡기 위해 어떤 서비스를 만들 것인가에 대한 고민이 시작되었다. 주제 선정을 위해 팀원들의 관심사를 파악하고 공통의 관심사를 주제로 진행하고자 했다. 그 이유는 모두가 관심이 있는 분야여야 그 분야에서 해결하고자 하는.. 더보기