728x90

개발 298

무중단 배포 알아보기

무중단 배포란?무중단 배포(Zero-Downtime Deployment) 는 서비스에 다운 타임이 발생하지 않으면서, 새로운 버전의 애플리케이션을 서버에 배포하는 것을 의미. 무중단 배포 패턴에는 대표적으로 순차적으로 배포하는 롤링 배포, 전체 서버를 통째로 바꾸는 블루/그린 배포, 트래픽을 순차적으로 이동시키는 카나리 배포가 존재한다.         롤링 배포(Roling Deployment) 롤링 배포(Roling Deployment) 는 서버를 한 대씩 순차적으로 업데이트하는 가장 기본적인 방식. 특정 시점에는 두 가지 버전이 공존하기 때문에 새로운 버전은 기존 버전 기능을 지원하는 등 하위 호환성(Backward Compatibility) 에 신경을 써야 한다. 롤링 배포는 새로운 버전을 배포하기..

개발/ETC 2025.03.25

[Spring] CQRS 패턴이란?

1. 개념시스템은 크게 상태 변경과 조회 기능을 제공한다. 주문 취소, 결제 기능은 상태 변경에 해당되며, 주문서 조회, 사용자 조회 등이 조회에 해당된다. 명령 쿼리 책임 분리 패턴(Command Query Responsibility Segregation, CQRS) 는 상태를 변경하기 위한 명령을 위한 모델과 상태를 제공하는 조회(Query)를 위한 모델을 분리하는 패턴을 의미한다. 예를 들어, Order라는 리소스를 Order(명령용), OrderData(조회용) 2개의 모델로 나누어서 관리할 수 있다. 이때 OrderData를 이용해서 표현 계층에 데이터를 출력하는 데 사용하고, 애플리케이션에서는 Order를 활용해 변경을 수행할 수 있다. - 자세히 !CQRS 패턴의 주요 개념 1. 명령(Com..

[Spring] 스프링 트랜잭션 AOP 동작 흐름

1. 스프링 트랜잭션 AOP 동작 흐름 @Transactional어노테이션을 사용한 선언적 트랜잭션 관리(Declarative Transaction Management)의 전체 흐름에는 크게 3가지 요소가 등장한다. 트랜잭션 매니저, 트랜잭션 AOP 프록시, 트랜잭션 동기화 매니저가 이에 해당된다. 클라이언트 코드로부터 요청이 들어오면 트랜잭션 AOP 프록시가 트랜잭션 매니저를 획득하고, 트랜잭션을 시작하기 위해서 트랜잭션 매니저에게 요청한다. 트랜잭션 시작 요청 받은 트랜잭션 매니저는 데이터소스를 통해 커넥션을 받아오고 트랜잭션을 시작한다. 그리고, 트랜잭션 매니저는 트랜잭션이 시작된 커넥션을 동기화 매니저에 보관한다. 이후 트랜잭션이 종료되는 경우 트랜잭션 매니저는 트랜잭션 동기화 매니저에 보관한 커..

[Dart] Functions

다트의 함수에 대해서 알아보자 !    1. ParametersDart도 객체 지향 언어이기 때문에 함수도 객체이다. JS처럼 함수를 변수에 할당할 수 있고, parameter로 전달할 수 있다. Dart 클래스의 인스턴스를 함수처럼 호출할 수도 있다. 함수는 required 파라미터를 원하는 수만큼 가질 수 있다. - Named parametersNamed parameters는 required 키워드가 표시되지 않는 한 선택 사항. 함수를 정의할 때 {param1, param2, …}를 사용하여 Named parameters를 지정./// Sets the [bold] and [hidden] flags ...void enableFlags({bool? bold, bool? hidden}) {...} 함수를..

[Dart] Built in Types

다트의 기본 타입에 대해서 알아보자!!  1. Numbers 다트에서 Numbers는 두 가지이다.- int플랫폼에 따라 64비트 이하의 정수 값을 갖는다. 기본 플랫폼에서 int값은 -2^64에서 2^63 - 1 사이일 수 있다. 웹에서 정수 값은 JavaScript 숫자(소수 부분이 없는 64비트 부동 소수점 값)으로 표시되며 -2^53에서 2^53 - 1일 수 있다.  - doubleIEEE 754 표준에서 지정한 64비트(배정밀도) 부동 소수점 숫자.  int와 double은 모두 num의 하위 타입. num 타입에는 +, -, / 및 *와 같은 기본 연산자가 포함되며 사용할 수 있는 다른 메소드로는 abs(), ceil() 및 floor() 등이 있다. (>>와 같은 비트 연산자는 int 클래스..

[Dart] Dart 언어 가이드 살펴보기

플러터를 이용해 앱개발을 할 수 있는데, 플러터는 dart 언어로 개발해야한다.기초를 알아보자!  1. Basic Dart Programvoid studyPrint(int num) { print('이것은 $num'); // 콘솔 출력}void main() { var num = 111; studyPrint(num);} 다른 언어와 매우매우매우 비슷하다.  void는 return해줄 값이 없는 경우 사용.int는 정수를 나타내는 자료형print는 콘솔에 내용을 출력할 때 사용.main은 앱이 시작되기 위한 최상위 함수이다.var는 자료형을 지정하지 않고 변수를 선언하는 방법이다.  거의 java나 javascript와 유사하다.    2. Keywordsabstract else importshow as..

[Kotlin] 코틀린 + 스프링부트로 단숨에 완성하는 초강력 JWT 인증 시스템!💡 보안과 성능을 모두 잡아라!🔥(2)

지난번에 예외발생 DTO를 생성까지 작성했다. [Kotlin] 코틀린 + 스프링부트로 단숨에 완성하는 초강력 JWT 인증 시스템!💡 보안과 성능을 모두 잡아라!🔥  1. validation 추가컨트롤러를 다시 보면 @RequestBody 옆에 @validated가 있었다. 이는 필요한 값이 안왔을 경우 예외를 발생시킨다. @PostMapping("/signup") fun signup( request: HttpServletRequest, @RequestBody @Validated(SignUpValidation::class) reqAuthDto: ReqAuthDto, result: BindingResult ): ResponseEntity { ..

[Kotlin] 코틀린 + 스프링부트로 단숨에 완성하는 초강력 JWT 인증 시스템!💡 보안과 성능을 모두 잡아라!🔥

코틀린 스프링부트로 JWT구현해봤다. 제목은 어그로 ㅎㅎ GPT가 만들어준..   1. 코틀린으로 프로젝트 생성한다.라이브러리는dependencies { implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-security") implementation("org.springframework.boot:spring-boot-starter-validation") implementati..

[Next] Next.js로 5분 만에 웹 앱 폭주! 이걸 몰랐다면 개발자로서 이미 뒤처진 거다!

제목 어그로 통했나요? GPT의 작품입니다.  간단하게 next & typescript로 프로젝트 생성 알아보겠습니다.   1. 프로젝트 생성 명령어npx create-next-app@latest --ts next-study  이렇게 하면 최신 버전의 nextjs와 typescript를 이용해서 프로젝트가 생성됩니다.    2. 취향 정하기 위 명령어를 입력하면 몇 가지 질문을 합니다.하나씩 알아보면- Would you like to use ESLint? ... No / YesESLint를 사용할거야? - YES! - Would you like to use Tailwind CSS? ... No / YesTailwind CSS 사용할거야? - YES! - Would you like your code ins..

CORS 알아보기

CORS에러를 많이 만나봤을 것이다. 내 블로그에서도  invalid cors request 403 해결 invalid cors request 403 해결"Invalid CORS request 403" 오류는 Cross-Origin Resource Sharing (CORS) 관련 오류로, 웹 브라우저에서 발생하는 보안 관련 오류다. 이 오류는 다음과 같은 상황에서 발생할 수 있다CORS 정책 위반: 웹 브라우저는devhooney.tistory.com   이 글이 요새 핫한(?) 편이다 ㅋㅋ 한 번 자세히 알아보자  1. 개념CORS는 Cross Origin Resource Sharing의 줄임말로 출처가 다른 곳의 리소스를 요청할 때 접근 권한을 부여하는 것이다.리소스를 주고받는 두 곳의 출처가 다르면 ..

개발/ETC 2025.01.10
728x90