본문 바로가기

연재작/WEB - BE

(10)
Spring Boot와 비교해보는 Nest.js의 핵심 Nest.js의 공식 문서의 초입부에는 Controller... 까지는 알고, 실제로 이는 Spring과 정말 흡사하다.그렇지만 그것 이외에는 이름이 비슷하더라도 Spring Boot와는 많이 달랐다. Nest.js의 요소를 설명하면서 Spring Boot의 어떤 것과 대응이 되는지 파악해보자. 1. 의존성 관리 기본적으로 둘 다 주로 사용하는 객체를 싱글턴으로 구현하고, 의존성 주입을 프레임워크가 직접해준다는 점에서 공통점이 있다.더보기이를 IoC(Inversion of Control) : 제어의 역전 - 개발자가 프로그램의 흐름을 제어하는게 아니라, 컨테이너 혹은 프레임워크가 흐름을 제어한다. 예를 들어서 Spring의 Spring Container를 IoC Container라 하는데, 이는 Bean..
Nest.js과 TypeORM TypeORM에서 Entity의 사용은 JPA와 흡사해 보여서 쓰면서 적응하면 될 것 같기는 하다. https://docs.nestjs.com/recipes/sql-typeorm Documentation | NestJS - A progressive Node.js frameworkNest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (..
Spring 개발자의 Nest.js 초입 작년에 개발에 입문 후 백엔드 개발에서 나의 학습의 진행은 아래의 순서와 같았다. 1. 사용할 언어에 익숙해지고; Java2. 그런 다음 웹 서버 프레임워크; Spring3. 마지막으로 고도화된 프레임워크를 다룬다; Spring Boot 같은 방식으로 이번에는 TypeScript와 express.js, Nest.js를 공부하려고 했으나일단 Nest.js를 배우기로 했다. express.js와 TypeScript는 Nest.js를 배워가면서 필요한 부분을 그때마다 찾아가는 식으로 해야 할 것 같다.무엇보다 Nest.js가 Spring과 그 구조가 유사하다고 말하기에, Nest.js를 배워가면서내가 모르는 문법이나 express.js(혹은 기타 JS기반 API 관련 내용)은 필요할때마다 알아가는 방식으로 진..
Spring과 Spring Boot 1. Tomcat과 Spring Container의 주 요소 Spring에 대해서 처음 배울 때 가장 이해하기 어려웠던 부분이자 지금도 약간 헷갈리는 부분의 도식이다. DispatcherServlet, DelegatingFilterProxy 둘 다 각각 Servlet, Filter 의 구현체이다.관리 자체는 Servlet Container 관할이기에 왼쪽에 있지만, 구현체는 Spring Bean 이라는 것을 알아두어야 한다. 만약 순수하게 Spring만을 사용한다면, Spring Container에서 제공되는 WebApplicationContext,즉 Bean의 생성과 주입까지는 우리가 Spring Boot환경에서 사용해왔던 것 처럼 사용이 가능하다. 그런데 이를 통해서 우리가 만들 수 있는 것은 서버 ..
Spring Bean Deep Dive Spring Bean과 관련해서 알게된 몇 가지 사실을 적어보고자 한다. 1. 생성자 주입을 권장하는 이유 MVC 패턴에 맞게, 그리고 3-layered-Architecture 패턴에 맞게 만들어오던 그동안은 순환 참조 자체가 발생할 일이 없었다.계층이 다른게 패키지 단위로부터 구분이 됐기 때문이다. 문제가 되는 시점은 @Configuration을 통해서 @Bean을 정의하고,해당하는 @Bean을 다른 @Configuration 혹은 @Component에 정의할 때 만들어졌다. 최근에 Spring Security를 배우다 생긴 상황이다. CustomAuthenticationProvider는 CustomUserDetails와 passwordEncoder에 의존@Component@RequiredArgsCon..
디렉토리 구조와 Facade 패턴 1. 디렉토리 구조 Spring을 통한 Backend의 프로젝트나 Frontend의 React를 사용한 프로젝트를 만들거나어떤 프로젝트를 만들 때도 개발자는 항상 디렉토리 구조를 잘 생각하고 설정해야 한다.프론트엔드 입장에서 디렉토리 구조를 짤 때 깊은 생각을 해보지는 않았지만,React를 사용해서 한번이라도 SPA를 만들어 본 입장에서 이 블로그의 내용이 참 좋아보였다.https://velog.io/@teo/separation-of-concerns-of-frontend 프론트엔드 개발자 관점으로 바라보는 관심사의 분리와 좋은 폴더 구조 (feat. FSD)최근 프론트엔드 개발에서 주목받는 FSD 아키텍쳐 폴더 구조를 주제로 소프트웨어 공학 관점에서의 관심사의 분리라는 원칙을 통해 설명하고자 했습니다. ..
JVM Runtime Data Area, Singleton과 Race Condition 1. Runtime Data AreaJVM은 크게 Class Loader, Runtime Data Area, JVM Engine으로 구성되어 있고그 중 Runtime Data Area는 JVM의 메모리 영역으로,우리가 흔히 알고 있는 Thread, Heap, Static영역(혹은 method, class영역)으로 구분되어 있다.Thread 영역은 지역 변수, 파라미터, 리턴 값을 담당, 메서드 호출 시 사용하는 영역이다.Heap 영역은 객체의 저장을 담당한다.java는 class 기반의 객체 지향 프로그래밍 언어이기에, 많은 객체가 생성되고 소멸된다.객체의 소멸, 데이터 이관을 관리하기 위해서 Garbage Collection을 시행하는데, Heap영역이 그 대상이다.Static 영역은 전역변수, Sta..
Spring bean (3) - 의존성 주입, Spring Framework의 의존성 관리 소프트웨어 개발을 하다보면 의존성이란 단어가 참 많이 나오는데, 객체 지향을 위한 SOLID 원칙 중 5번째인 D(Dependency Inversion Princilple)에서도 의존성이 나온다. 먼저 의존 역전 원칙을 어떻게 소개하는지 살펴보자. 1. 의존 역전 원칙(Dependency Inversion Principle) 먼저, 의존성이 무엇인지 파악해보자." the conventional dependency relationships established from high-level, policy-setting modules to low-level, dependency modules are reversed, thus rendering high-level modules independent of the..