본문 바로가기

전체 글

(45)
TIL 0518 (ssr/csr) CSR(Client Side Rendering) 클리이언트 쪽에서 렌더링이 일어난다. 초기 로딩 시에, html과 로직이 담겨있는 JS를 다운로드 한다. 그리고 빈 html에 JS를 통해 DOM을 동적으로 생성하여 그려낸다. 실행 순서 : 유저가 웹사이트에 요청을 보냄 -> CDN이 html/js 접근 가능한 링크를 클라이언트에 보냄 -> JS가 완료되면 실행 -> 데이터를 위한 API가 호출됨 -> 받아온 데이터 노출 장점: JS를 통해 동적으로 DOM을 그려내기 때문에, 원하는 곳만 부분적으로 업데이트가 가능하다. 단점: 렌더링이 되고 있는 도중엔 로딩하는 화면을 기다려야함 HTML 파일 하나만 받아오기 때문에, SEO에 취약하다. SSR(Server Side Rendering) 서버에서 랜더링 준비..
TIL 0514 (클라우드 컴퓨팅) 클라우드란? 네트워크를 통해 접근이 가능한 가상화되어 있는 서버와 서버에서 작동하는 프로그램(소프트웨어)과 데이터베이스. 클라우스 서버는 전 세계 데이터 센터에 위치한다. 클라우드 컴퓨팅이란? 데이터 저장 처리 및 어플리케이션 실행 등 다양한 컴퓨팅 작업을 클라우드 서비스 업체의 서버를 통해 실행하는 것. 다시 말해 직접 물리적 서버를 구축하여 사용하지 않고, 임대하여 사용하는 서비스이다. 장점 비용 절감 - 자체 서버를 구축하지 않아 설치 비용이 필요 없다. 탄력적인 글로벌 확장 - 전세계 적으로 데이터센터가 구축되어 있어 필요한 위치의 서비스를 사용할 수 있다. 자동화 - 리소스 관리, 유지보수 등 관리 작업을 자동화 할 수 있다. 서비스 모델 Iaas(Infrastucture-as-a-Service..
TIL 0508(ODM/ ORM) 백엔드가 DB와 통신을 할 때 도움이 되는 라이브러리. ORM(Object Relational Mapper) 객체 지향 프로그래밍에서 사용하는 클래스와 객체를, 데이터베이스의 테이블과 레코드에 매핑하는 기술. 객체 모델과 관계형 모델간의 불일치한 부분을, 객체 간의 관계를 바탕으로 SQL을 자동생성하여 해결해준다. 즉, 쿼리를 직접 짜지 않고 간결한 표현문으로 같은 기능을 수행할 수 있게 도와줌! 프레임워크: Sequelize, myBatis ODM(Object Document Mapper) 객체 지향 프로그램에서 사용하는 클래스와 객체를, 데이터베이스 문서에 매핑하는 기술. NoSql 데이터베이스에서 사용한다. 프레임워크: Mongoose, Morphia 장점 객체 지향적인 코드 작성으로 코드의 가독성..
TIL 0428(Multer) Multer node.js의 미들웨어 중 하나로, 파일 업로드를 위해 사용된다. Http 요청 request에 파일 정보를 추가하여, 서버 측에 전달해준다. multipart/form-data 형식이고(다른 폼은 지원하지 않는다), 다중 파일업로드를 지원하며, 파일에 대한 세부설정을 옵션으로 지정할 수 있다. 먼저, Express는 파일 업로드 기능을 기본적으로 제공 하지 않기 때문에 Multer를 이용하기 위해서 모듈을 설치해야한다. npm install multer or yarn add multer 옵션 dest of storage 파일 저장 위치 fileFilter 허용할 파일 limits 업로드 된 데이터 한도 preservePath 파일의 기본이름 대신 보존할 파일의 전체 경로 옵션 객체를 생략..
TIL 0427 (Framework, Repository, 순환모듈 참조) Framework Nest.js는 기본적으로 Express를 사용하지만, Fastify도 호환이 된다. (Fastify는 Express와 유사한 방식으로 문제를 해결한다) Express 가장 많은 점유율을 가지고 있다(따라서 커뮤니티가 더 활성화 되어있다). 수많은 가능한 미들웨어 및 기능을 제공한다. Fastify 속도가 빠르다(Express와 거의 두 배 가량 차이남). 문서화 기능을 내장하고 있다(Swagger를 사용하여 자동 생성) 커뮤니티가 작다. Repository 패턴 서비스와 데이터 사이의 중개자 역할을 하는 Repository가 추가하는 패턴. 데이터 액세스 로직을 캡슐화하여 비즈니스 로직과 분리시킨다. 서비스가 데이터베이스와 같은 시스템과 직접적인 결합되는 것을 피할 수 있고, 시스템의..
TIL 0423(DTO/DAO/MVC) DTO(Data Transfer Object) 계층간 데이터 교환을 위한 객체. 데이터베이스에서 데이터를 얻어와 service/controller 등에 전달할 때 사용된다. 가져온 데이터를 비즈니스 로직에서 처리하기 위해 DTO 객체로 변환하고, 다시 데이터베이스나 외부 시스템에 전달한다. DTO는 보통 불변하고, 필드를 가지고 있는데, 이 필드에 필요한 정보를 가지고 있다. request와 response용 DTO는 view를 위한 객체이다. 코드의 가독성을 높이고, 간결하고 명확하게 작성할 수 있다. DAO(DataTransfer Object) 객체 지향 프로그래밍에서 데이터베이스에 관련된 작업을 수행하는 객체. 데이터베이스에 접근해서 검색/삽입/갱신/삭제 등의 작업을 수행한다. 비즈니스 로직과 데이..
TIL0422(middleware /filter&pipes) 미들웨어 라우트 핸들러 이전에 호출되는 함수이다. 요청과 응답 사이에서 실행되며, 요청을 처리해서 특정 액션을 실행시킨다. export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer .apply(LoggerMiddleware) .forRoutes('cats'); } } 필터 예외 처리를 담당한다. 전역 필터와 로컬 필터로 나뉜다. 예외 필터는 로깅을 추가하거나 동적 요인에 따라 커스텀하기 위해 사용된다. export class ForbiddenException extends HttpException { constructor() { super('Forbidden', HttpStatus.FOR..
TIL 0416(Nest 구조:모듈, 컨트롤러) 모듈 provider 인젝터에 의해 인스턴트화되고 모듈에서 공유되는 공급자(service) controllers 인스턴스화 되어야하는 클래스 imports 공급자를 내보내는 모듈 목록 (이를 통해 모듈들을 호출한 모듈에서는 해당 모듈이 제공하는 공급자들을 사용할 수 있게된다. exports 외부 파일에서 사용할 수 있도록 내보낸다. 컨트롤러 들어오는 요청을 처리하고 클라이언트에 응답을 반환한다. 컨트롤러를 정의하는데는 데코레이터가 필요하다. 데코레이터에서 경로 접두사를 지정하면, 각 경로에 대해 해당 부분을 반복할 필요가 없다. @Controller('cats') // 데코레이터의 경로 설정 export class CatsController { // localhost:8080/cats @Get() fin..