전체 글 132

Prisma Relation

Prisma Relation 최근 진행한 프로젝트에서 ORM을 도입하지 않아 엄청난 생산성의 저하를 경험하였다. ORM의 여러 가지 강점 중 개인적으로 테이블 간의 참조 관계 설정이 간단하고 관계에 따라 생성되는 메서드를 사용할 수 있다는 부분이 제일 편리하고 생산성이 높아지는 거 같다. 이를 통해 데이터베이스 모델 설계에 집중할 수 있어 여러모로 사용하지 않을 이유가 없다. 1:1(일대일) 양쪽에서 최대 하나의 레코드에 연결 가능하다. 한 명의 사용자는 하나의 프로필을 갖는다. User(사용자) 사용자는 프로필을 항상 갖지 않아도 되므로 ? 옵셔널로 설정한다. Profile(프로필) 참조 관계는 @relation 메서드로 설정한다. fields는 외래키(Foreign Key)를 가리키며 referenc..

데이터베이스 2022.10.17

Prisma

Prisma ORM(Object Relational Mapping)이다. 자바스크립트에 Sequelize가 있다면 타입스크립트에 Prisma와 TypeORM이 존재한다. 타입스크립트와 친화적이며 여러 DBMS를 지원한다. 다른 ORM 과는 근본적으로 다르다고 공식 문서에 나와있다. 기존 ORM은 객체 지향 방식으로 테이블을 매핑한다고 하지만 Prisma는 선언적인 모델을 정의해 복잡한 모델 인스턴스를 효율적으로 관리할 수 있다. 사용 이유 Sequelize를 사용해 봐서 그런지 러닝 커브가 높지 않았다. 로우 쿼리 사용으로 인해 발생하는 단점을 커버해 줄뿐더러 모델 간 관계 설정 시 Sequelize보다 훨씬 직관적이었으며 마이그레션이 매우 편하고 코드의 양 또한 더 적은 거 같다. 이로 인해 왜 생산성..

데이터베이스 2022.10.13

실전 프로젝트 마지막 주 차 회고

드디어 실전 프로젝트가 종료되었다! 8월 26일부터 10월 7일까지 6주간 정말 쉴 새 없이 달렸다. 프로젝트 시작 전엔 6주라는 기간이 참 짧은 거 같다고 생각했는데 지금 뒤돌아보니 참으로 길었다. 이번 마지막 주도 하루하루 정신없이 보냈다. 팀원 모두 리더님을 중심으로 최종 프로젝트 발표에 들어갈 자료들을 준비했다. 그동안 작성했던 노션 페이지와 프로젝트 이슈들을 살펴보며 작성했던 내용들의 논리적 근거가 타당한지 틀린 부분은 없는지 점검하고 또 점검하였다. 이 과정에서 큰 문제는 없었지만 보충해야 할 부분들이 조금 있어 부족한 부분들을 채웠다. 다른 팀과 다르게 우리 팀은 수치 중심의 자료가 많아 발표 자료 페이지 수가 꾀나 많았다. 어떠한 성능적인 부분에 이슈가 발생하여 어떤 식으로 해결하여 어떻게..

기타/회고 2022.10.10

OSI 7 Layer

OSI 7 Layer 네트워크 통신의 각 과정을 계층별로 개념화한 모델이다. 각 계층의 구간별로 데이터의 움직임을 알 수 있으며 장치 간의 데이터 통신을 설명하는데 유용하게 활용된다. 등장 배경 초기 OSI 모델은 업체가 다를 경우 통신 장비의 호환이 불가능하였다. 이에 따라 여러 통신 업체 간 장비들의 호환성이 필요해 등장하게 되었다. 통신 과정에서 오류가 발생할 경우 특정 계층에서 이상이 생길 경우 해당 단계의 하드웨어나 소프트웨어를 고쳐 문제를 해결할 수 있다. 역할 7개 층으로 구성되어 있으며 각 계층마다 수행하는 역할이 다르다. 프로토콜 물리 데이터 링크 네트워크 전송 세션 표현 응용 X Ethernet Token Ring IP ARP ICMP TCP UDP NetBIOS SSH TLS ASCI..

네트워크 2022.10.09

ExpressJS sharp

ExpressJS sharp Nodejs 환경에서 사용 가능한 이미지 처리 라이브러리이다. 최근 진행했던 프로젝트에서 매우 유용하게 사용했다. 내부는 libvips라는 C언어 기반으로 구현되었으며 다양한 형식을 지원하고 퍼포먼스 또한 훌륭하여 노드 진영에서 이미지 관련 라이브러리 중 비교할 대상이 없다. 설치 sharp는 다양한 운영체제를 지원한다. 플랫폼을 별도로 명시하지 않으면 현재 자신이 사용하고 있는 운영체제를 기준으로 설치된다. 운영체제별로 기능의 차이는 없으며 윈도우 플랫폼이 설치된 node_modules 폴더를 리눅스에 옮겨 실행하면 문제가 되므로 반드시 개인에 맞는 실행 환경을 확인해야 한다. npm i sharp // 자신의 운영체제 npm i --platform=win32 // 윈도우 ..

서버/Express 2022.10.08

AWS Serverless Lambda

Serverless Lambda 서버를 관리하지 않고 모든 유형의 애플리케이션 또는 백엔드 서비스에 대한 코드를 실행할 수 있는 이벤트 중심의 컴퓨팅 서비스를 의미한다. 특정 이벤트 발생 시 사용자가 작성한 코드를 실행하는 함수로 이해하면 될 거 같다. 구성 Deployment Package 즉 배포 관련 런타임과 Lambda가 실행되는 실행 환경(컴퓨터 스펙) 2가지로 구성되어 있다. 1. Deployment Package 함수의 코드와 코드를 실행하기 위한 런타임 코드 용량 제한 존재 알집 파일은 50mb 압축 해제 후 250mb까지 가능 S3와 컨테이너 이미지 또는 Lambda Layer 등으로 배포 가능 2. 일반 구성 다른 AWS와 연결하기 위해 IAM 존재 메모리는 128~10.240mb까지 ..

클라우드 2022.10.07

Serverless

Serverless 서버를 관리할 개발자나 인프라 엔지니어가 필요 없다는 의미다. 서버를 관리할 필요가 없으며 프로비전 없이 특정 기능에 대한 코드를 실행할 수 있다. Serverless 방식이 등장하기 이전 대표적인 2가지 컴퓨팅 인프라 구축 방법의 한계점을 보완하기 위해 등장하였다. 컴퓨팅 인프라 구축 방법 1. 데이터 센터(온 프레미스) 물리적인 하드웨어(서버)를 직접 구매하여 해당 서버에 직접 OS와 런타임 환경을 설치하고 실질적인 서비스를 제공하는 서버를 설치하는 방식이다. 과거 2년 전 직장에서 DELL 서버를 직접 구매하여 설치하고 선 정리와 UPS를 도입하는 등 온 프레미스 환경을 직접 구축해 보았다. 하드웨어와 소프트웨어를 직접 관리해아함 데이터 센터 내부의 정전이나 천재지변 수준의 재난..

클라우드 2022.10.05

URI URL

URI Uniform Resource Identifier의 약자로 네트워크 상의 자원을 나타내는 통합 자원 식별자이다. Identifier은 식별자의 의미로 고유해야 한다. 네트워크 상의 겹치지 않는 고유한 id URL Uniform Resource Locator의 약자로 네트워크 상의 웹 자원에 위치를 지정하는 웹 자원에 대한 참조이다. 네트워크 상 자원의 위치를 나타내는 주소 > 차이 URI는 URL을 포함하는 상위 개념이다. > 구분 1. https://example.io https://example.io 라는 서버를 의미하므로 URL이면서 URI 2. https://example.io/images example.io 서버의 images라는 네트워크 상의 자원의 위치를 의미하므로 URL이면서 URI..

네트워크 2022.10.05

DBMS

DBMS 데이터베이스 내 데이터에 접근하도록 도와주는 시스템을 의미한다. 사용자가 질의(Query)를 요청하면 DBMS는 받은 질의를 질의처리기(Query Processor)와 저장 시스템(Storage System)을 통해 데이터에 접근할 수 있도록 해준다. DBMS 언어 데이터베이스에 접근하기 위해 데이터 관리 시스템을 사용해야 한다. 데이터 언어(Data Language)는 DBMS를 사용하기 위한 언어이며 데이터 언어는 SQL을 생각하면 된다. SQL 언어는 각자 역할이 다른 3가지의 언어로 구성되어 있다. 1. DDL 데이터 정의어(Data Definition Language) 스키마(데이터베이스 테이블)를 정의하거나 삭제 또는 수정하기 위해 사용하는 언어이다. Create Alter Drop ..

데이터베이스 2022.10.03

실전 프로젝트 5주 차 회고

5주 차가 끝났다. 저번 주 차까지 배포돼있는 서버에 에러를 처리하고 안정화 작업을 하였다. 주 초에 1차 유저 피드백을 토대로 개선해야 될 부분들을 개선하고 새롭게 추가된 1가지의 조회 기능을 마무리하였다. 최종 발표에 앞서 당분간 기능 추가될 계획이 없는 상태라 이번 주는 다른 주 차들에 비해 심리적 압박감이 조금 덜 한 상태로 진행할 수 있었다. 기존 기능에 대한 치명적인 에러도 없고 서버 인프라 구축도 어느 정도 해놓은 상태라 서비스 운영 안정기에 접어든 거 같다. 물론 2차 유저 피드백을 토대로 기존 기능들에 대한 개선과 인프라에 고도화를 시키려면 아직 해야 할 작업들이 많지만 공식적으로 최종 발표까지 가용할 수 있는 기간이 5일도 채 남지 않았으므로 무언가 새로운 걸 시도해야 할 시기는 아니라..

기타/회고 2022.10.03