728x90

개발자 8

무중단 배포 알아보기

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

개발/ETC 2025.03.25

[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..

DB 동시성 제어하는 방법 알아보기

DB 시스템에서 동시성을 제어하는 방법에 대해서 알아보자 !!!   대표적인 동시성 제어 방식은 MVCC(Multi Version Concurrency Control)Lock-Based Concurrency Control이 있다.  1. MVCCMVCC는 데이터의 여러 버전을 유지하여 트랜잭션이 동시에 데이터를 읽고 쓸 수 있도록 하는 방식이다.각 트랜잭션은 자신만의 일관된 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항에 영향을 받지 않는다. 데이터의 각 버전을 유지하여 읽기 작업이 쓰기 작업과 독립적으로 이루어질 수 있다.트랜잭션은 시작 시점의 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항을 보지 못한다. 읽기 작업 시 잠금을 사용하지 안항 높은 동시성을 제공한다.읽기 작업..

개발/ETC 2025.01.06
728x90