전체 글

모르는 내용 및 아는 내용 모두 꼼꼼히 복습하여 익숙해지는 그 날까지 꾸준히 공부하겠습니다.
Kotlin/코프링

Kotlin 로깅 찍는 방법, Logging - @slf4j 대체 방법

코틀린에서는 자바 + 스프링에서 지원하는 @slf4j을 사용할 수 없다. 그래서 코틀린에서 로깅을 찍기 위해서 로깅 관련 의존성을 추가하여 로그를 찍는 것이 가장 간편한 방법이다.의존성 추가implementation("io.github.oshai:kotlin-logging-jvm:7.0.0") KotlinLogging.logger 사용private val logger = KotlinLogging.logger {}fun main() { logger.trace { "This is trace log" } logger.debug { "This is debug log" } logger.info { "This is info log" } logger.warn { "This is warn log"..

DB

MySQL CTE와 파생 테이블의 기본 개념부터 활용 방법

CTECTE란 Common Table Expression의 약자로 서브 쿼리로 사용되는 파생 테이블과 비슷한 개념입니다. 데이터베이스에서 view와 다른 점은 view는 가상 테이블을 생성하고 유지가 되지만, cte는 일회성 테이블로 하나의 쿼리문이 끝나면 자동으로 삭제됩니다. CTE 사용 상황View를 생성할 수 없는 권한일 때 대체제로 사용 가능합니다.일회성 가상 테이블을 생성할 수 있습니다.저는 CTE를 데이터 값 업데이트 하는 데 사용하였습니다.백업 데이터를 만들어야 하는 경우가 있었는데, 과거 데이터를 현재 데이터보다 id 값을 적게 해주어야 하는 요구사항이 있었습니다. Why? 그냥 id를 auto_increment로 증가하면 되지 않나,관리자 페이지에서 백업 데이터가 추가되는 테이블을 id ..

Aws

AWS Lambda를 사용해 S3에 이미지 업로드하기 (Python & API Gateway)

0. Aws Lambda 들어가기,이번 글은 한 번 써봐야지 써봐야지 했던 Aws Lambda를 사용해 보고 수행 과정, 느낀 점, 앞으로 어떻게 활용하면 좋을 지에 대해 많이 배울 수 있었습니다. 우선 새로운 프로젝트에 들어가기에 앞서, 항상 해봤던 것만 사용하면 실력이 더 늘지 않겠다는 생각이 들어 안 해본 기술들을 리스트업 해보고 해당 기술의 개념과 사용했을 때의 장점을 정리해 보았습니다. 그중 Aws Lambda 서비스가 매력적으로 느껴졌습니다.서비스 기능을 빠르게 배포할 수 있다. (코드 용량 제한이 있지만, 긴 코드의 복잡한 기능은 람다가 아닌 다른 서버로 처리하는 것이 좋아 보임!)월 1,000,000건까지 요청이 무료다.대략 월 백만 건까지 무료로 제공해주고 있고, trigger, 이벤트 ..

Spring Framework/Spring

Spring cloud Eureka 등록된 애플리케이션 조회하기 - open feign 통신

이슈로컬에서는 localhost:8080, 8081, 8082 등 port 번호를 통해 구분하여 Open Feign 요청을 보내어 개발을 진행했습니다.하지만, 실제 배포되는 환경에서는 고유 IP 번호를 가지고 있으니, IP 번호가 바뀐다면 일일이 전부 변경해 줘야 되는 것이 너무 번거롭다고 생각이 들었습니다. 그래서 Spring Cloud Eureka Server를 이용해서 각 Spring Cloud Server를 등록하고 필요한 곳에서 application name으로 원하는 서버의 주소를 공유해 Open Feign 인터페이스로 처리하였습니다. 문제👉 Spring Cloud Eureka Server에 마이크로 서비스를 등록하는 방법은 알고 있지만, 등록된 Spring Cloud Server는 어떻게 ..

트러블슈팅

GitHub Actions CI/CD 자동 배포 시 @Value 값 주입 문제 해결하기

저희 Glue 서비스에서는 application.yml과 같은 설정 파일은 Spring Cloud Config로부터 전달받아 각 마이크로 서비스에 적용하는 방식으로 구현하였습니다. Spring Cloud Config는 연결된 Github의 Private Repository에서 application.yml을 조회하고 name과 profile을 기준으로 각 spring cloud server에게 전달해줍니다. 저희 팀에서는 MSA 환경에서 application.yml을 Spring Cloud Config 서버를 통해 관리하도록 하였습니다. 이슈👉 Spring Cloud 프로젝트를 Github Actions로 CI/CD를 구축하는데 @Value 값이 초기화되지 않는 오류를 만났습니다.@Value로 설정된 부..

트러블슈팅

Spring @Value, static 정적 바인딩 오류 해결하기

이슈👉 Spring Boot 프로젝트에서는 application.yml에 다양한 설정과 환경 변수처럼 프로젝트에 사용할 값을 지정할 수 있습니다.이를 @Value 어노테이션으로 값을 불러와 사용할 수 있습니다. Auth-Service에서 jwt secret, access-expiration-time, refresh-expiration-time의 값을 yml 파일에서 불러오며 사용하였습니다. 처음에 JWT를 생성하고 검증하는 JwtTokenProvider.class를 생성했을 때, jwt secret, access-expiration-time, refresh-expiration-time 값들은 변경되지 않는 값이고 다른 메서드에서 사용될 수 있도록 private static final로 설정하고 @Val..

Kotlin

Kotlin 클래스 상속 알아보기 - inheritance

Kotlin ClassAll classes in Kotlin have a common superclass, AnyAny has three methods: equlas(), hashCode(), toString()By default, Kotlin classes are final - they can’t be inherited코틀린 클래스는 기본적으로 Any를 상속하고 있다. 또한, 기본적으로 final로 선언되어 있어 상속할 수 없다. 상속 가능한 클래스로 만들기 위해서는 open 키워드를 명시해야 한다.open class Base(pp1: Int)class Derived(pp1: Int): Base(pp1) If the derived class has no primary constructor, then e..

CS/Database

데이터베이스 B Tree 자료구조란, 데이터 삽입 과정 및 AVL Tree와 차이 이해하기

인덱스란데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조로, 사전의 목차와 유사하다.저장되는 컬럼의 값을 사용하여 항상 정렬된 상태를 유지합니다.이러한 특징으로 인덱스는 쓰기 작업인 Insert, Update, Delete 연산 성능이 희생된다는 장점이 있습니다.하지만 데이터베이스 작업은 읽기 작업이 80% 정도 일어나므로, 인덱스를 사용하는 것이 더 큰 장점이 있습니다.InnoDB 스토리지 엔진에서는 Secondary Index(Primary Index를 제외한 모든 인덱스)의 리프 노드에는 레코드의 PK가 저장됩니다. 따라서 Secondary Index 검색에서는 레코드를 읽기 위해 PK를 가지고 있는 B-Tree를 다시 한번 검색해야 합니다. (1 + 1)B Tree자녀 노드의 최대 개수를..

kylo
오늘도 열심히 - BE