Backend

·Backend/Spring
EC2 인스턴스 생성 방법은 이전 포스팅을 참고해주세요!로컬에서 Docker 설정 Jar 파일 빌드하기 보통 빌드를 할 때 ./graldew clean build 를 많이 봤을텐데  이번에는 ./gradlew clean bootJar를 통해 Spring Boot 애플리케이션을 위한 실행 가능한 JAR파일만 생성했음  ./gradlew build는 bootJar를 포함하여 내부 동작이 더 길다반면, bootJar의 경우 단순히 프로젝트의 jar파일을 만드는 목적으로 빌드 속도가 빠르다(clean 작업은 build/ 와 같은 빌드 산출물 디렉토리를 삭제하여 이전 빌드 결과물을 모두 제거함) Dockerfile 생성하기# Dockerfile# jdk17 Image StartFROM openjdk:17# jar..
·Backend/Spring
알아보기 좋은 예외 처리를 위해 Spring Boot에서 Custom Exception을 설정해보자!! ErrorCode enum 생성 및 설정 springboot 에서 에러를 발생시켰을 때, 전달할 에러 코드를 관리하는 enum을 생성해준다! enum(열거형)은 서로 연관된 상수들의 집합을 정의할 때 사용하는 특별한 자료형임!=> 주로 몇 가지 값 중 하나만 선택해야 하는 경우에 사용됨(계절, 요일, 상태 등)  package berich.backend.exception;import lombok.RequiredArgsConstructor;import org.springframework.http.HttpStatus;@Getter@RequiredArgsConstructorpublic enum ErrorCo..
·Backend/Spring
spring boot를 이용하여 프로젝트를 하게 되었는데MySQL을 처음 연동해보면서 기록을 남겨보겠습니다...   implementation 'org.springframework.boot:spring-boot-starter-data-jpa'runtimeOnly 'com.mysql:mysql-connector-j' 우선 build.gradle에 위 2개의 의존성을 추가해준다 📌implementation 과 runtimeOnly 의 차이는 뭘까 궁금증이 들었다!=> runtimeOnly는 컴파일 시점에는 필요없지만 실행 시점에는 꼭 필요한 라이브러리의 의존성을 추가할 때 사용한다고 한다   DB 연동을 위해서는 resources 디렉토리 안에 있는 application.properties를 설정해줘야 하..
·Backend/Node
이번 프로젝트에서 회원가입시에 사용자에게 이메일 인증을 받기 위해 찾아보던중 Nodemailer라는 라이브러리를 발견해서 사용해보겠습니다! (Nodemailer는 node.js에서 email을 쉽게 보낼 수 있는 기능들을 제공해줌)  Nodemailer를 사용할 때 이메일을 보낼 gmail 계정과 해당 gmail의 앱 비밀번호가 필요하다!   Google 계정 => 보안 => 2단계 인증을 활성화한 후 검색창에 앱 비밀번호를 검색해서 생성할 수 있다    이렇게 gmail 계정과 앱 비밀번호는 .env파일에 저장해주었습니다. 터미널에 npm i nodemailer를 이용하여 라이브러리를 설치해주고 const nodemailer = requiere("nodemailer")를 이용해서 모듈을 import하면..
·Backend/Node
최근에 Co-Code라는 코딩 교육 플랫폼 프로젝트를 시작하면서 백엔드를 맡게 되었습니다!! 가장 먼저 하게된건 서버 배포하기... 바로 시작하겠습니다  가장 먼저 EC2부터 생성해보았다!(제 블로그 AWS에 인스턴스 생성 실습이 있으니 참고하시면 될 것 같습니다) => Ubuntu를 사용했음!! (+ 프리티어)  키페어도 만들어서 잘 보관해주고!! ssh -i "pem 파일 이름" ubuntu@ec2-"퍼블릭 ip 주소".ap-northeast-2.compute.amazonaws.com 이제 작업중인 환경에서 (저는 vscode를 사용하기 때문에 vscode 터미널을 이용했음) pem 파일 위치로 이동 후 위의 명령어를 입력하여 EC2 서버로 접속한다   그런데Permissions for 'key.pe..
·Backend/Node
알게 모르게 cors 에러를 처리하기 위해 Express.js에서 미들웨어를 사용해왔는데문득 이게 정확히 뭔지 궁금증이 생겼습니다..  CORS는 Cross-Origin Resource Sharing의 약자로, 다른 출처 리소스 공유에 대한 허용/비허용 정책이다=> 이 정책은 브라우저에서 실행되는 웹 애플리케이션이 다른 출처(Origin)로부터 리소스에 접근할 때 적용됨 브라우저는 기본적으로 Same-Origin Policy를 따르며, 이는 스크립트나 스타일 등의 리소스 요청이동일한 출처에서 온 것이어야 한다는 정책이다. (동일한 출처(Origin)란 프로토콜, 호스트, 포트가 동일한 것을 의미) https://www.naver.com:3000/ 과 같은 URL이 있다면https가 프로토콜www.nave..
·Backend/Node
session 로그인만 해오던 내가 JWT를..? 바로 시작하겠습니다~  JWT는 JSON Web Tokens 의 줄인말로 웹에서 정보를 안전하게 전송하기 위한 표준 방식 중 하나이다 JSON 객체를 사용하여 정보를 암호화된 문자열로 표현하며 JWT는 토큰 자체가 정보를 포함하고 있어 별도의 저장 공간이 필요 없다! => 서버와 클라이언트 간의 상태를 유지하지 않음 하지만, 세션/쿠키 방식에 비해 JWT 토큰의 길이가 길기 때문에 토큰 발급 및 검증 요청이 많아질수록 서버에서 자원 낭비가 발생한다는 단점이 있다 JWT는  Header, Payload, Signature 세 가지 부분으로 구성되어 있다 Header는 토큰의 유형과 토큰을 서명하는 알고리즘을 지정하는 두 가지 부분으로 이루어져있다 Paylo..
·Backend/Node
그동안 MySQL을 이용해 개발할 때 Sequelize를 사용했었는데이번에 진행중인 Node.js 프로젝트에서 TypeORM을 처음 사용해봐서 공부를 해보겠습니다..  우선 ORM이 뭔지부터 알아봐야하는데 ORM이란 Object-Relational Mapping의 약자로, 객체와 관계형 데이터베이스 간의 매핑을 제공하는 기술이다 (개발자가 SQL 쿼리를 직접 작성하지 않고도 데이터베이스를 다룰 수 있게 도와줌)  그럼 관계형 데이터베이스는 또 뭐냐,,,? 관계형 데이터베이스는 데이터를 테이블 형식으로 저장하고, 테이블 간의 관계를 이용하여 데이터를 조직화하는데이터베이스 시스템이다.=> 이러한 데이터베이스는 관계형 모델에 기반하고 있으며, 데이터를 행과 열의 형태로 표현하는 테이블을 사용함! 이런 관계형 ..
JJunGyo
'Backend' 카테고리의 글 목록