[GitHub] 처음 프로젝트를 하는 사람들을 위한 브랜치 사용방법
·
GitHub
팀 프로젝트마다 브랜치를 사용하는 방법은 다양하다.이것을 Git branch 전략이라 하며, 아래에 제시된 방법은 전략 중 GitHub flow 방법이다.Git팀마다 브랜치 전략은 다르다. 정론은 없으나 아래는 내가 주로 사용한 방법이니, 처음으로 프로젝트를 진행하는 사람들한테 도움이 되길 바라면서 글을 작성해보았다.이 글은 본래 학회 활동을 하면서 학회원들에게 가이드라인을 위해 작성한 글이니, 가끔 말투가 이상한 부분이 있으니 이해 바랍니다.참고자료Git branch 전략(Git-Flow, Github-Flow, Gitlab-Flow)이 블로그에서 GitHub flow 참고프로젝트의 브랜치 전략 사용방법주의: 항상 자신이 현재 어떤 브랜치에 있는지 확인할 것!중요한 부분만 적어놨습니다. 필요없는 부분은..
[트러블슈팅] 벌크 삭제를 통한 성능 개선
·
WEB/트러블슈팅
🚀 도전 목표퀴즈 서비스 삭제 기능 성능 최적화💡 핵심 과정 및 결과YouQuiz? 서비스에서 하나의 클래스(Class)는 다수의 퀴즈(Quiz)를 포함하고 있다.각 퀴즈는 여러 개의 선택지(Choice)를 보유계층 구조: Class(1) → Quiz(N) → Choice(M)많은 퀴즈가 생성되는 만큼 많은 퀴즈도 삭제될 것이다.클래스 삭제 시 연관된 모든 퀴즈와 선택지도 함께 삭제 필요클래스 당 평균 10개 이상의 퀴즈와 각 퀴즈당 4개 이상의 선택지 예상향후 서비스 확장 시 데이터 증가로 인한 성능 저하 우려따라서 클래스 삭제 기능의 성능을 파악하고, 개선사항을 트러블 슈팅해보았다. 퀴즈 서비스의 경우 한 게임 당 문제의 개수는 10개가 넘어가는 경우가 많아질 것이라 보았다. 삭제하는 방법은 다음..
[웹 배포] 컨테이너와 도커(Docker)
·
웹 배포
학습 키워드컨테이너란 무엇인가?도커란 무엇인가? 학습정리컨테이너란 무엇인가?컨테이너(Container)는 애플리케이션 실행에 필요한 모든 것을 포함하는 독립된 실행 환경이다.우리가 개발하고 AWS나 NCP에 배포할 환경을 컨테이너라고 보아도 된다. 정확히 말하면, 우리가 컨테이너에 기반한 환경을 사용한다고 볼 수 있다.이런 컨테이너는 매우 중요한데, 팀원마다 개발 환경이 다를 수 있기에 예상치 못한 오류가 발생할 수 있다. 컨테이너로 모든 환경을 제어 및 설정하여 이런 오류가 일어나지않게 할 수 있다.컨테이너는 기본적으로 코드와 실행 환경(라이브러리, 종속성, 설정 파일 등)을 하나의 패키지로 묶어, 어디서든 일관되게 작동하도록 한다. 컨테이너의 특징컨테이너의 주요 특징으로는 아래의 3개가 있다.독립성:..
[NestJS] enableCors( )
·
Dev Framework/NestJS
학습 키워드CORS in NestJS학습정리1. 기본 CORS 설정 옵션NestJS의 enableCors() 메서드를 호출할 경우, 아래와 같은 옵션들이 기본적으로 적용된다.async function bootstrap() { const app = await NestFactory.create(AppModule); app.enableCors(); await app.listen(3000); console.log(`Application is running on: ${await app.getUrl()}`);}1.1 origin: *기본적으로 모든 출처(``)에서 오는 요청을 허용한다.이는 브라우저의 Origin 헤더와 무관하게 요청을 처리할 수 있도록 설정된다.인증 정보를 포함하는 요청(credential..
[WEB] CORS
·
WEB
학습 키워드CORS학습정리1. CORS의 기본 개념CORS란?브라우저 보안 정책 중 하나인 동일 출처 정책(Same-Origin Policy)을 우회하기 위해 사용됨.클라이언트가 다른 출처(다른 도메인, 프로토콜, 또는 포트)에 요청을 보낼 때, 서버가 이 요청을 허용할지 결정함.동일 출처 정책브라우저는 보안상의 이유로, 클라이언트에서 시작된 요청이 동일한 출처에서만 허용되도록 제한.예를 들어, https://example.com에서 실행 중인 JavaScript는 기본적으로 https://another.com에 요청을 보낼 수 없음.CORS 허용 예시REST API 서버: https://api.myserver.com클라이언트: https://myfrontend.com서버가 https://myfronte..
[NestJS][TypeORM] Data Mapper Pattern
·
Dev Framework/NestJS
학습 키워드Data Mapper Pattern: 객체와 데이터베이스 간의 매핑을 책임지는 중간 계층Repository: 데이터 접근을 관리하는 클래스ORM (Object-Relational Mapping): 객체와 관계형 데이터베이스 간의 매핑분리된 책임: 데이터와 비즈니스 로직의 분리유지 보수성: 대규모 애플리케이션에서의 효율성 학습 정리Data Mapper Pattern이란?**Data Mapper Pattern**은 객체와 데이터베이스 간의 매핑을 담당하는 중간 계층이다.이 패턴은 데이터 접근 로직과 비즈니스 로직을 분리하여 유지 보수성과 확장성을 높이는 것을 목표로 한다.즉, 엔티티 객체는 데이터의 구조를 표현하며, 실제 데이터베이스와의 상호작용은 리포지토리나 매퍼에서 수행한다.백엔드 개발하면서 ..
[NestJS] pipe
·
Dev Framework/NestJS
학습 키워드pipe 학습정리1. Pipe란?Pipe는 요청 데이터를 변환(transform)하거나 검증(validation)하는 데 사용되는 NestJS의 핵심 컴포넌트이다.컨트롤러 메서드가 호출되기 전에 실행되며 컨트롤러로 전달되는 데이터를 사전에 가공하거나 유효성 검사를 실행하기 위해 사용된다.주요 사용 사례변환 (Transformation): 데이터를 원하는 형식으로 변환 (예: 문자열 → 정수).검증 (Validation): 데이터를 평가하여 유효하면 통과, 유효하지 않으면 예외 발생.Pipe의 기본 구성 요소@Injectable() 데코레이터를 사용해 정의.PipeTransform 인터페이스를 구현하며, transform 메서드가 필수.import { Injectable, PipeTransfor..
[NestJS][TypeORM] Activate Record Pattern
·
Dev Framework/NestJS
학습 키워드TypeORMActivate Record PatternBaseEntity 학습 정리학습정리를 시작하면서 사실 공식문서를 읽으면 이해가 더 잘 될 것 같다. 아래 참고자료에 공식문서를 올려놨다. 참고해도 좋다. Activate Record Pattern공부하고 나니까 패턴 이름이 개념과 일치하지않는 것 같아서 이해하기가 어려웠다. 이름이 왜 이렇게 지어졌는지 뜻풀이를 해보았다.Active: 데이터베이스 접근이 활성화 되어있다.Record: 데이터베이스의 테이블에서 한 행객체 자체가 데이터베이스 레코드와 1:1로 매핑되고, 그 객체가 스스로 데이터베이스 작업을 수행할 수 있는 "활성화된 상태"에 있기 때문에 Active Record라는 이름이 붙었다.한마디로 정리하자면, Entity 클래스 내에서..
개발자 성현
개발새발 블로그