반응형
[Kotlin+Spring] 자주 사용하는 변환식 확장 함수(Extension Function) Util로 관리하기
Back-end 2024. 11. 5. 22:34

회사에서 프로젝트를 진행하다 보면 자주 사용하게 되는 반복적인 변환을 많이 하게 되는 경우가 있다.그럴 경우 공통 util로 빼서 관리하면 형식이 수정될때 한번에 수정하기도 편하고 코드량 자체도 줄어들 수 있어.. 기록용으로 남겨본다. 공통 모듈 코드현재 회사에서는 날짜랑 금액을 나타낼때 해당 util을 사용했었다object ConvertToStringUtil { // timestamp를 특정 날짜 형식으로 표현 fun Int.toStringDate(): String { val dateTime = LocalDateTime.ofEpochSecond(this.toLong(), 0, ZoneOffset.of("+9")) return dateTime.format(DateTim..

AWS CloudWatch 경보 Slack으로 전송하기
Back-end 2024. 1. 9. 22:33

인스턴스의 상태를 모니터링 할 수 있는 최소한의 수단을 만들기 위해 간단하게 빠르게 해볼 수 있는 것 중에 경보 설정을 통한 slack알림 받기를 해보려고 한다. 서버에 문제가 발생하기 전에 사전 경보를 받아 더 빨리 대처하고 대비할 수 있게 하려는 의도를 가지고 AWS에서 제공하는 모니터링 지표를 활용하여 간단하게 설정해보았다. SNS(Simple Notification Service) 주제 생성 먼저 주제 생성 하기 AWS 콘솔 접속 후 - SNS로 이동 - 주제 생성 Slack으로 전송하려면 Lambda를 사용해야 하기 때문에 표준을 선택하고 이름입력 후 생성한다. 아래 상세 설정은 보고 설정하고자 하는대로 설정하면 된다. CloudWatch 경보 생성 이제 알림을 발생시키고자 모니터링을 할 경보를..

서킷 브레이커[CirCuit Breaker] 패턴이란?
Back-end 2023. 4. 9. 19:35

Circuit Breaker Pattern의 필요성 서비스 개발을 하다보면 외부 API를 호출해야 하는 경우가 생기게 된다. 이러한 외부 API 호출 시, 호출 실패를 고려하지 않을 수 없는데, 호출 이후 request가 타임아웃 될 때까지 쓰레드풀이나 DB풀을 선점하고 있거나, 메모리를 잡아먹으면서 점차 리소스가 부족해지고, 장애가 전파되어 다른 부분까지 문제가 발생할 수 있다. 또한 장애가 발생한 서버에 계속 요청을 보내는 경우 부하를 받아 장애 복구를 힘들게 만든다. 따라서 장애가 발생한 서비스를 탐지하여 요청을 보내지 않게 차단할 필요가 생기게 되었다. Circuit Breaker Pattern의 동작 이 패턴은 Releasse It이라는 서적에서 처음 소개된 패턴이다. 전기의 회로 차단기에서..

[SpringBoot] 프로젝트 리소스 파일 가져오기
Back-end 2022. 11. 29. 22:45

프로젝트를 진행하다 보면 ~/src/main/resources 폴더에 파일을 저장하고 가져와서 사용할 일이 있다. 이때 프로젝트를 빌드하게 되면 리소스 파일은 CLASS_PATH에 위치하게 된다. 따라서 로컬에서는 아래의 예시 코드로 실행해도 실행이 되지만. 실제로 빌드를 하고 배포를 했을 때는 에러가 발생한다. ... fun getSheetService(): Sheets { return Sheets.Builder( GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), HttpCredentialsAdapter( ServiceAccountCredentials.fromStream(FileInputStream("src/m..

자바 직렬화(Serializable)
Back-end 2022. 10. 4. 22:47

자바 직렬화란? 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부 시스템에서 사용할 수 있도록 바이트 형태로 변환하는 기술 바이트로 변환된 데이터를 다시 객체로 변환하는 역직렬화를 아울러서 얘기하기도 한다. 스프링에서 자바 직렬화(Serializable) 사용법 기본 모델에 java.io.Serializable 인터페이스를 implements하면 기본적으로 직렬화 할 수 있다. 기본 자료형(int, char, string, long, ....등)이어야 한다. 생성자나 메소드는 직렬화 대상에 속하지 않는다. class Report ( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, @Column(columnDe..

HTTP Method & Patch 등장에 따른 Dispatcher Servlet의 변화
Back-end 2022. 8. 2. 23:49

HTTP Method 간략 정리 주요 메소드 : GET, POST, PUT, DELETE, PATCH OPTIONS : 주로 CORS에서 사용, 요청 URI에서 사용할 수 있는 옵션 설명 HEAD : GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환 TRACE : 목적 리소스의 경로를 따라 메시지 loop-back 테스트 CONNECT : 메서드는 목적 리소스로 식별되는 서버로의 터널을 맺음 Patch Method의 등장 • 과거 HTTP 표준에는 PATCH 메소드가 존재하지 않았다. • 2010년도에 Ruby on Rails가 부분 수정의 필요를 주장하면서 공식적으로 HTTP 프로토콜로 추가되었다. • 스프링 프레임워크는 2002년에 첫 릴리즈를 하였는데, 이보다 한참 뒤에 등장하였고..

[Kotlin] Kotlin + Springboot 에서의 validation
Back-end 2022. 4. 27. 17:15

gradle 설정 예전과 달리 Springboot 2.3 버전 부터는 spring-boot-starter-validation 의존성을 명시해야 Valid를 사용 가능하다. build.gradle.kts 파일에 아래의 의존성 코드를 추가 implementation("org.springframework.boot:spring-boot-starter-validation") 관련 어노테이션 정리 어노테이션 예시 설명 @DecimalMax @DecimalMax(value = "5.5") 소수 최댓값 지정 같은 값까지 허용(예시에선 5.5까지 허용) null 허용 @DecimalMin @DecimalMin(value = "5.5") 소수 최솟값 지정 같은 값까지 허용(예시에선 5.5까지 허용) null 허용 @Max..

[Kotlin] 코틀린 타입 시스템(Type System) - ( ?/!!/.?/as?/let함수/lateinit)
Back-end 2022. 3. 24. 10:51

타입 시스템(Type System)이란? 널 가능성, 코틀린에서의 null에 대한 접근 방법은 가능한 한 실행 시점에서 컴파일 시점으로 옮기는 것이다. 널이 될 수 있는지 여부를 타입 시스템에 추가함으로써 컴파일러가 여러 가지 오류를 컴파일 시 미리 감지하여 실행 시점에 발생할 수 있는 예외 가능성을 줄일 수 있다. 따라서 타입 시스템이란 널이 될 수 있는 타입을 명시적으로 지원하는 것이다. 널이 될 수 있는 변수에 대해 메소드 호출을 하지 못하게 함으로써 많은 오류를 방지한다. NULL이 될 수 있는 타입 - 코틀린의 모든 타입은 기본적으로 널이 될 수 없는 타입이다. - 널이 될 수 있는 타입인 변수에 대해 메서드를 호출하면 NPE(NULL Point Exception)가 발생할 수 있어서 코틀린은 ..

반응형