본문 바로가기

Development/Web

(19)
Development/Web R U Dead Yet? - RUDY Attack에 관한 궁금증을 풀어내다. 들어가며 오늘은 지난 글에서 언급했던 RUDY(R U Dead Yet?) 공격에 대해서 공부하고, 직접 실습해보면서 얻게된 정보를 정리하고자 한다. 1. DoS RUDY 공격 또한 DoS 공격 중 하나이므로 DoS에 대한 간단한 내용부터 알아보겠다. DoS는 Denial of Service의 약자로, 서비스 거부 공격이라는 의미이다. 이는 공격 대상 시스템 또는 서버에 과도한 부하를 발생시켜 다른 이들이 서비스를 이용하지 못하도록 방해하는 공격 기법이다. DoS 공격에는 여러 공격 기법이 있으며, 알아본 내용에 따르면 크게 두 가지 성격으로 분류할 수 있다. 1.1. DDoS 가장 잘 알려진 DDoS(Distributed Denial of Service, 분산 서비스 거부 공격)가 있다. 이는 서비스 중..
Development/Web [AWS] NestJS & Elastic Beanstalk CI/CD 구축 들어가며 CI/CD 툴에는 Jenkins, Travis, Circle CI 등 다양하게 있지만, 나는 주로 Github Action을 이용하는데, 그 이유는 매우 간편하기 때문이다(위에서 언급한 다양한 CI/CD 툴은 나중에 직접 사용해보고 블로그에 정리하겠다). EB를 선택한 이유 AWS에서 배포 서버를 구축하는 방법으로는 EC2(+ CodeDeploy), Elastic Container Service(ECS), Elastic Beanstalk(EB) 등 다양하게 있다. AWS EB를 알기 전까지는 주로 EC2 인스턴스에서 CodeDeploy를 통해 배포하곤 했는데, Node.js, CodeDeployAgent를 설치하는데 소요되는 시간이 결코 적지 않았다. 따라서, 코드 작성에 조금 더 집중하기 위해..
Development/Web Nest JS #3 - PostgresSQL에서의 TypeORM(Entity, Repository) 생성 들어가며 이전까지는 Nest JS의 기능을 알아보는데 더 중점을 두기 위해 로컬 메모리 방식의 데이터베이스를 사용하였다. 지금부터는 애플리케이션에 실제 데이터베이스를 연결하고, TypeORM, Entity, Repository에 대해서 정리해보겠다. PostgresSQL 설치 PostgresSQL은 객체-관계형 데이터베이스 시스템으로 전 세계 사용자가 4번째(OracleDB, MySQL, MsSQL, PostgresSQL)로 많은 RDBMS이다. 이는 MySQL에 비해 SQL 표준을 더 많이 지워하며, 쿼리가 복잡할수록 성능면적으로 더 우수하다는 특징이 있다. 영상에서는 로컬에 PostgresSQL을 설치했지만, 나는 Docker Container 환경에서 PostgresSQL을 실행해주었고, DBeav..
Development/Web Nest JS #2 - 로컬 메모리를 사용한 DB 로직 구현(Model, DTO, Pipe) 들어가며 이전 과정에 이어서 이번에는 데이터베이스 로직을 구현하는 내용을 정리하였다. 데이터베이스 로직 구현 데이터베이스와 관련한 로직을 처리하는 부분은 Service에서 담당한다. 지금부터 BoardsService를 구현해볼텐데, 바로 데이터베이스와 연결하면 헷갈릴 수 있으니, 로컬 메모리를 사용하여 처리하는 방식으로 구현해보겠다. 먼저, 데이터를 저장할 boards 변수를 배열로 초기화한다. @Injectable() export class BoardsService { private boards = []; } 이때, private 접근 제한자를 사용한 이유는 BoardsController에서 private 접근 제한자를 사용한 이유와 동일하다. 즉, 다른 컴포넌트에서 BoardsService에 접근하였..
Development/Web Nest JS #1 - 기본 구조 및 기초 개념(Model, Controller, Providers, Service, DI) 들어가며 현재 항해99에 참여중이며 약 2주 동안 알고리즘 공부만 하고 있으니, 흥미도 떨어지고, 텐션도 낮아지는 듯한 느낌이 들었다. 다시 흥미를 끌어올릴겸 잠시 주위를 환기시켜보겠다는 의미로 주특기 공부를 하다가 Nest JS가 눈에 들어오기 시작했다. Nest JS라는 프레임워크를 들어본 적은 있기 때문에 관심이 있는 상태였긴 했는데, 결국 호기심을 참지 못하고 공부한 내용을 글로 남겨본다. Nest에 관심을 보이게 된 계기 누군가 내게 Node.js로 당장 뭘 할 줄 아냐라고 물어본다면, 간단한 API 서버, 실시간 통신 서버를 흉내내는 정도라고 할 수 있을 정도로 express 프레임워크를 자유자재로 다루지는 못하지만, 혼자 공부하면서 항상 고민하던 것이 있었다. 그건 바로 효율적인 개발을 위해..
Development/Web API는 무엇인가? REST API는 또 무엇인가? 1분 요약 들어가며 REST를 설명하기 전에 API는 무엇인지에 대해서 간략하게 짚고 넘어가보자. API란? API(Applictaion Programming Interface)는 프로그램 간 통신 규약으로, 서버와 클라이언트가 소통하기 위해 정해놓은 규칙이라고 할 수 있다. # 요청 : GET /api/movies # 의미 : "서버야 나한테 영화목록 데이터를 좀 넘겨주련?" API의 역할은 다음과 같이 크게 3가지로 분류할 수 있다. 서버와 데이터베이스의 소통창구 : 서비스를 운영할 때 고객들이 데이터베이스에 직접적으로 접근하지 못하도록 해야한다. 클라이언트가 API를 통해 서버에게 데이터를 요청하면, 서버는 데이터베이스에 접근하여 클라이언트가 요청한 데이터를 가져오고, 이를 클라이언트에게 전송해준다. 애플리케..
Development/Web Open API 사용 시 발생하는 CORS 이슈, 원인과 해결 방법 정리 들어가며 오랜만에 Frontend를 연습할 겸 공공데이터포털 사이트에서 오픈 API를 사용해보았다. 그런데, CORS 이슈가 발생하는 탓에 결국에는 Node.js(express)로 Proxy 서버를 구축하여 개발하였다. 🔗 소스코드 : https://github.com/choewy/medical-maps-api-proxy-ssr CORS CORS(Cross-Origin Resource Sharing)을 해석해보면 교차 출처 리소스 공유라고 하는데, 도대체 이게 무슨 말인지 알 수 없었다. 폭풍 구글링하고, 구글링한 정보를 취합해서 간단하게 설명하자면 다음과 같다. 📌 API 개념 요약 API가 무엇인지 생각하면 CORS를 이해하는데 도움이 될 것이라고 생각한다. API를 간략히 설명하자면 클라이언트와 서..
Development/Web Express + MVC pattern (3) - 회원가입 기능 구현 및 완료 이어가며 지난 글에서는 컨트롤러를 구현부터 모델로 로그인 기능을 구현하는 부분까지 정리하였다. 이번에는 모델로 회원가입 기능 구현과 최종 결과를 정리해보도록 하겠다. 회원가입 기능 구현 🔗 소스코드 : v1.0.7-model2 지난 글의 로그인 기능 구현에 이어서 이번에는 회원가입 기능을 구현해보도록 하겠다. 회원가입 시 기존의 데이터에 새로운 데이터를 추가하되, 아이디가 이미 존재하는 경우에는 회원가입이 진행되지 않도록 해야한다. 모든 사용자 데이터 조회 이를 위해 아래와 같이 코드를 작성하여 기존의 모든 데이터를 불러오도록 하였다. /* ./app/src/models/UserStorage.js */ "use strict"; const fileSystem = require('fs').pr..
Development/Web Express + MVC pattern (2) - Contoller 기능 구현, DB 구축, fetch, Model로 구현한 로그인 처리 이어가며 지난 글에서는 프로젝트 초기 설정부터 View 기능 개발까지 정리해보았다. 이번에는 컨트롤러를 구현하고, 모델로 로그인 기능을 구현하는 부분까지 정리해보도록 하겠다. Controller 구현 🔗 소스코드 : v1.0.4-controller 이전에는 라우터에서 직접 웹 페이지를 렌더링 할 수 있도록 코드를 작성하였는데, 이러한 동작을 컨트롤러를 통해 할 수 있도록 코드를 수정해보겠다. 먼저, 컨트롤러는 두 개의 object로 구성할 건데, 첫 번째는 웹 페이지를 렌더링시켜주는 render, 두 번째는 HTTP 요청에 맞는 로직을 처리하는 process로 구성하겠다. 이를 ./app/src/routes/home/index.controller.js에 작성하면 아래와 같다. /* ./app/src/ro..
Development/Web Express + MVC pattern (1) - 프로젝트 초기 설정, View 기능 개발 들어가며 아키텍처 패턴(Architecture patterns)에는 MVC(Model-View-Controller), MVP(Model-View-Presenter), MTV(Model-Template-view) 등 여러 패턴이 존재한다. 이 중에서 MVC 패턴은 주로 Spring 프레임워크에서 사용되는 것으로 알고 있으나, 필자의 경우 Spring은 고사하고 Java를 다뤄볼 기회가 없었기 때문에 MVC 패턴이 무엇인지에 대해서 항상 궁금했었다. 따라서, MVC 패턴을 적용한 express로 로그인과 회원가입 기능을 간단하게 구현하면서 MVC 패턴이 어떻게 동작하는지 정리해보았다. 🔗 MDN - MVC pattern 🔗 MVC 패턴(written by. bp.chys) 🔗 YouTube - Node.js..