[Node.js]환경 변수 관리(dotenv)
·
Language/JavaScript
Node.js 프로젝트를 개발할 때, 데이터베이스 접속 정보나 API 키 같은 민감한 정보를 코드에 직접 작성하는 경우가 많다. 하지만 이런 중요한 정보들은 절대 공개 저장소에 올리면 안 되고, 안전하게 관리하는 방법이 필요하다. 이럴 때 사용하는 것이 환경 변수이다.환경 변수환경 변수(Environment Variables)는 운영체제나 실행 환경에서 설정하는 값으로, 앱의 설정 정보를 외부에서 주입할 때 사용한다. 예를 들어 데이터베이스 주소, 사용자명, 비밀번호 등을 환경 변수로 관리하면, 코드에 직접 노출하지 않고도 프로그램이 이 정보를 사용할 수 있다.사용 방법1. dotenv 패키지 설치하기Node.js 프로젝트에서는 .env 파일을 만들어 환경 변수를 선언하고 dotenv 패키지로 이를 불러..
[Node.js]AWS RDS로 회원가입 기능 구현하기
·
Language/JavaScript
지금까지 구조를 보면 databases 폴더 내 JSON 파일로 사용자 데이터를 저장했다.하지만 데이터가 많아지고 안정성, 확장성을 고려해 AWS RDS(MySQL)를 이용한 데이터베이스 관리로 전환했다.1. AWS RDS에서 MySQL 데이터베이스 생성하기1-1. AWS 콘솔 접속 및 RDS 서비스 선택AWS 관리 콘솔에 로그인 후, RDS 서비스를 선택한다. RDS(Amazon Relational Database Service)는 관계형 데이터베이스를 클라우드 환경에서 손쉽게 설정하고 운영할 수 있도록 도와주는 서비스이다.https://aws.amazon.com/ko/rds/ 데이터베이스 관리 시스템 | 관계형 RDS | Amazon Web Services높은 가용성, 처리량 및 스토리지 확장성을 통..
[Node.js]파일 기반 회원가입 기능 구현하기
·
Language/JavaScript
비동기 처리자바스크립트는 단일 스레드(single-thread) 언어이다. 이는 한 번에 하나의 작업만 처리할 수 있다는 뜻이다.그런데 웹 애플리케이션에서는 시간이 오래 걸리는 작업이 자주 발생한다.이러한 작업을 처리하는 동안 사용자 인터페이스가 멈추지 않도록 하기 위해 자바스크립트는 비동기 처리 방식을 제공한다.비동기 처리란, 시간이 오래 걸리는 작업을 기다리지 않고 바로 다음 작업을 수행하며, 작업 결과가 준비되면 그때 해당 작업을 처리하는 방식이다.PromisePromise는 자바스크립트의 비동기 처리를 위한 핵심 개념이다.말 그대로 약속이라는 의미로, 비동기 작업의 결과를 나중에 받아 처리할 수 있게 해주는 객체이다.상태설명pending대기 중(아직 작업이 끝나지 않음)fulfilled작업 성공(..
[Node.js]User 클래스로 로그인 책임 분리하기
·
Language/JavaScript
기존 코드의 문제점https://yje44428.tistory.com/205 [Node.js]UserStorage로 데이터 관리하기데이터베이스 객체를 직접 컨트롤러에 두었을 때의 문제점아래처럼 사용자 정보를 담은 users 객체를 컨트롤러 내부에 직접 작성하는 방식은 간단한 테스트용 코드에는 유용하지만, 실제 서비스yje44428.tistory.com전 코드는 컨트롤러에 로그인 로직이 모두 들어가 있는 구조였다.사용자 정보를 저장한 UserStorage에서 id와 psword 배열을 받아와, 컨트롤러 내부에서 직접 if문으로 로그인 검증을 수행했다.이 방식은 간단한 기능을 구현할 땐 편했지만, 데이터 구조나 비밀번호 정책이 바뀔 때마다 컨트롤러 로직까지 함께 수정해야 했다.결국 컨트롤러가 너무 많은 책임..
[Node.js]UserStorage로 데이터 관리하기
·
Language/JavaScript
데이터베이스 객체를 직접 컨트롤러에 두었을 때의 문제점아래처럼 사용자 정보를 담은 users 객체를 컨트롤러 내부에 직접 작성하는 방식은 간단한 테스트용 코드에는 유용하지만, 실제 서비스 환에서는 여러 가지 문제가 발생할 수 있다.const users = { id: ['a', 'b', 'c', 'd'], psword: ['1234', '5678', '4321', '8765']};낮은 재사용성회원가입, 사용자 정보 조회, 비밀번호 변경 같은 기능이 추가될 때마다 users 데이터를 계속 복사하거나, 유사한 로직을 또 작성해야 한다. 즉, 코드가 반복되고 재사용이 어려워진다.유지보수의 어려움데이터 구조나 검증 방식이 바뀔 때마다, 이 컨트롤러 코드를 직접 열어 수정해야 한다.예를 들어, 비밀번호 정책을..
[Node.js]fetch로 로그인 기능 구현하기
·
Language/JavaScript
사용자가 로그인 폼에 입력한 정보를 fetch를 사용해 서버로 POST 요청 보내고 서버(express)가 그 데이터를 받아서 로그인 검증 후에 응답하는 전체 과정을 정리해봤다.사용자가 로그인 폼에 입력전체 코드 로그인코드 상세 설명 defer 속성을 통해 js가 html 파싱이 끝난 뒤 실행되게 해서, document.querySelector()가 제대로 동작할 수 있도록 보장한다.const id = document.querySelector("#id");console.log(id);왜나하면 만약 위 코드가 login.js 안에 있다고 가정했을 때 html이 완전히 파싱되기 전에 js가 실행되면 요소가 아직 존재하지 않기 때문에 null이 출력된다.fetch로 POST 요청 보내기전체 ..