Backend
-
[Design Pattern] Singleton Pattern, Nest.jsBackend/Design Pattern 2024. 7. 18. 18:32
Singleton Pattern이란? 싱글톤 패턴은 특정 클래스의 인스턴스가 하나만 생성되고, 이를 통해 모든 클라이언트가 동일한 인스턴스를 공유하도록 보장하는 디자인 패턴입니다. 이 패턴은 전역 변수처럼 어디서든 접근할 수 있는 객체를 제공하며, 이를 통해 리소스를 절약하고 데이터 일관성을 유지할 수 있습니다. 어떤 문제가 있을까? 1. 구현 코드가 많이 들어갑니다.인스턴스 생성 여부를 제어하고 멀티쓰레드 환경에서 동기화 처리 등을 해야 하므로 구현이 복잡해집니다. 2. DIP(Dependency Inversion Principle, 의존성 역전 원칙) 위반의존성 역전 원칙은 고수준 모듈과 저수준 모듈이 추상화된 인터페이스에 의존해야 한다고 하지만, 싱글톤 패턴은 클라이언트 코드가 구체 클래스에 직접 ..
-
[Design Pattern] 전략 패턴(Strategy pattern) in JavascriptBackend/Design Pattern 2024. 7. 16. 14:46
작은 게임을 하나 제작하려고 하는데 처음 기획이 아래와 같다고 가정합니다.챔피언은 이름, 체력, 공격타입(AD, AP)을 가집니다.챔피언의 역할군에는 전사와 마법사가 있습니다.따라서 아래 코드처럼 챔피언 추상 클래스를 정의하고 상속받아 전사와 마법사 챔피언 클래스를 생성합니다.// 챔피언 이름enum Championname { BRIAR = 'Briar', VAX = 'Vax',}// 공격 종류enum AttackType { AD = 'AD', AP = 'AP',}abstract class Champion { constructor( public readonly championInfo: { name: Championname; health: number; attack..
-
RESTful API 설계Backend 2024. 5. 27. 15:49
리소스, URI리소스는 웹 상에 존재하는 이름을 가진 모든 정보를 의미합니다. url를 이용함으로써, 프로그램은 리소스가 표현하는 정보에 접근할 수 있습니다.URI : 유니폼 리소스 식별자, 리소스를 통일적으로 식별하는 ID💡 URI에는 URL, URN이 있습니다. URL은 리소스의 위치, URN은 리소스의 이름을 뜻합니다. 리소스의 이름으로 찾는 것은 거의 불가능한 일이기 때문에 거의 사용되지 않습니다. 따라서 해당 글에서는 URL과 URI를 같은 의미로 사용하겠습니다. REST아키텍처 스타일이란 시스템의 아키텍처를 결정할 때 나침반이 되는 것을 의미합니다.REST란 네트워크 시스템의 아키텍처 스타일, 즉 웹 전체의 아키텍처 스타일을 의미합니다. REST의 구성자원(Resource): URI행위(Ve..
-
[Nest.js] GuardsBackend/Nest.js 2024. 4. 4. 23:49
Guards 애플리케이션의 최전선에서 말그대로 애플리케이션을 보호하는 역할을 담당합니다. 가드를 이용하면 컨트롤러가 요청을 처리하기 전에 안전하지 않은 요청을 효과적으로 차단할 수 있습니다. 따라서 애플리케이션 보안을 위해서 필수적인 사용자 인증이나 접근 제어를 구현하는 데에 유용합니다. NestJS로 들어오는 요청은 컨트롤러(controller) 단에 도달하기 전에 반드시 가드를 거쳐가도록 되어 있습니다. 기본적으로, Guard는 @Injectable() 데코레이터로 주석이 달린 클래스로, CanActivate 인터페이스를 구현합니다. 단일 책임이 존재하고, 특정조건에 따라 요청을 라우터 핸들러에 의해 처리할지 여부 결정합니다. ⇒ 승인(Authorization) 특정 조건 : 권한, 역할, ACL(A..
-
[Nest.js] Test CodeBackend/Nest.js 2023. 11. 25. 18:36
Test Code를 작성해야 하는 이유 개발 과정 중 예상치 못한 문제를 미리 발견할 수 있는데, 에러를 클라이언트보다 빨리 발견할 수 있습니다. 작성한 코드가 의도한 대로 작동하는지 검증할 수 있습니다. 테스트 코드를 통해 동작하는 방식과 결과 확인이 가능합니다. 코드 수정이 필요한 상황에서 유연하고 안정적인 대응할 할 수 있게 해줍니다. 즉, 테스트 코드는 코드 변경에 대한 사이드 이펙트를 줄이는 예방책이 됩니다. 또한 코드 변경 시, 변경 부분으로 인한 영향도를 쉽게 파악할 수 있습니다. 리팩토링 시 기능 구현이 동일하게 되었다는 판단을 내릴 수 있습니다.리팩토링은 기존에 잘 동작하는 코드를 변경하여 발전시키는 작업인데, 리팩토링으로 인하여 기존 기능이 동작하지 않으면 굉장한 손해라고 볼 수 있습니..
-
[Nest.js] TypeORM, Repository PatternBackend/Nest.js 2023. 10. 2. 18:59
TypeORM Type ORM은 TypeScript를 기반으로 한 ORM(Object-Relational Mapping) 라이브러리로, 데이터베이스와의 상호작용을 추상화하여 개발자가 SQL 쿼리 대신 객체 지향적인 방식으로 데이터베이스를 다룰 수 있도록 도와줍니다. 즉, Typescript를 사용해 DB에 접근하고, DB를 다룰 수 있게 합니다. ORM(Object Relational Mapping) : ORM은 객체와 관계형 DB의 데이터를 자동으로 변형 및 연결하는 작업을 담당합니다. ORM을 이용하게 되면 객체와 DB의 변형을 유연하게 다룰 수 있습니다. TypeORM 주요 기능 1. Entity, Repository TypeORM은 엔티티 클래스를 통해 데이터베이스 테이블과의 매핑을 정의합니다. ..
-
Nest.jsBackend/Nest.js 2023. 9. 18. 22:59
Nest.js는 효율적이고 확장 가능한 서버 사이드 애플리케이션을 구축하기 위한 고성능의 Node.js 프레임워크입니다. 기업 친화적인 프레임워크이고, express보다 우리가 선호하는 구조를 적용할 수 있습니다. Typescript를 기반으로 하지만, Javascript로도 사용이 가능하며 OOP(Object Oriented Programming) FP(Functional Programming) FRP(Functional Reactive Programming) 와 같은 다양한 개발 방법론을 사용할 수 있습니다. 1. OOP (객체 지향 프로그래밍, Object-Oriented Programming) 객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그램을 객체들의 집합으로 보고 이들이 ..
-
MVC 패턴과 Django 구조Backend/Django 2022. 8. 17. 11:46
1. 프레임워크 프로그래밍의 기초 뼈대가 되는 개념. 프로그래밍의 기초적인 구조를 제공해줌. 프로그램의 구조 설계 및 효율적이고 반복적인 사용이 가능한 클래스를 제공해줌. 2. MVC 패턴 MVC패턴은 디자인 패턴 중 하나이다. 디자인 패턴 : 프로그램이나 어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 것을 정리하여 특정한 “규약”을 통해 쉽게 쓸 수 있는 형태로 만든 것. 즉 “좀 더 쉽고 편리하게” 사용할 수 있게 만든 특정한 방법들 MVC ? Model, View, Controller 의 약자이다. 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴이다. 위 그림처럼 사용자가 controller를 조작하면 c..