러닝을 시작했다
Life/운동2023. 5. 27. 12:05러닝을 시작했다

최근에 러닝을 시작했다 모임에는 4월에 들어온 것으로 기억한다... 가입을 한 이유는 사실 스트레스를 해소하기 위함이다... (직장을 다니다 보니 으윽) 처음에는 3분 거리도 뒤에서 간신히 따라올 정도로 지구력이 약했다 이날 이후로, 거동이 불편하면 정강이 밑이 통증이 생긴다는 것을 깨닫고, 그주에 바로 러닝화 종류 벼락치기 공부해서 하나 구매했다 정말 운이 좋게 서현역에서는 나이키, 뉴발란스 등 모두가 있었다 나이키는 내 발볼에 안 맞다는걸 알고 뉴발란스로 갔다... (역시 동양인 발볼은 뉴발로 가는게) new balance 1080 v12 freshfoam x 를 착용하고, 아 이거다 싶어서 바로 구매했다. 가격은 17만원 정도 했다 두 달이 조금 안 되는 사이에 4km를 거의 쉬는 시간 없이 뛰는 ..

블로그 방문자수, 9000
Life/운동2023. 5. 27. 11:27블로그 방문자수, 9000

큰 방문자 수는 아니지만 9000명을 돌파했다... ㅋㅋㅋㅋ... 의미 없나? 그래도 포스팅은 꾸준히 해야지...

Section 7: Cloud Configuration
Book & Lecture/이도원님 MSA2023. 5. 24. 14:01Section 7: Cloud Configuration

yaml 등 환경 설정 정보를 각각의 Micro Service가 아닌 외부에서 관리한다 또한 재기동하지 않고 동적으로 환경 설정 정보를 반영할 수 있다 재미있게도 Config server는 spring.cloud.config.server.git.url을 넣지 않으면 기동이 되지 않는다. (.git디렉터리 존재해야 하고 그 안에 remote 등의 정보도 있어야함... 즉 완전한 .git이 필요하다) 상대, 절대 주소 spring: application.name: config-service cloud.config.server: # git.uri: 'file://${user.dir}/../../../../leedowon-msa-spring-cloud-configuration' // 상대주소, ..의 의미를 인..

Section 6: User Service (Security in Spring Boot 3.x) (삽질..)
Book & Lecture/이도원님 MSA2023. 5. 22. 00:41Section 6: User Service (Security in Spring Boot 3.x) (삽질..)

JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. jwt.io 내용 로그인 하면 User 서비스에서 인증 토큰(JWT)을 발급한다 권한이 필요한 API 요청은 API Gateway의 토큰을 해석하는 필터가 처리한다 인증이 이루어지는 순서는 아래와 같다 - 로그인 시도: AuthenticationFilter.attemptAuthentication - 시큐리티의 유저 정보로 변환: UserDetailsService의 구현체.loadUserByUsername - 인증 성공 후처리: AuthenticationFilter.successfulAu..

Section 3 ~ 5 E-Commerse App, User, Catalog, Orders MicroSerivce
Book & Lecture/이도원님 MSA2023. 5. 22. 00:38Section 3 ~ 5 E-Commerse App, User, Catalog, Orders MicroSerivce

Section 3. E-commerce 애플리케이션 서버 종류 (마이크로서비스의 약어로 MS를 사용) Eureka Server: (Registry Service) MS 등록 / 검색 API Gateway Server: (Routing Service) MS 부하 분산 / 서비스 라우팅 Config Server: (Configuration Service) MS 설정 정보를 동적으로 변경 Queuing System: MS 간 메시지 발행 및 구독 (ex. kafka) Section 4. Users Microservice-part1 Greeting 출력 2가지 방법 Environment env.getProperty("greeting.message") ?: "No Message" Bean + Value @Comp..

Secion 0~2: Micro Service와 Spring Cloud 소개, Service Discovery, API Gateway
Book & Lecture/이도원님 MSA2023. 5. 22. 00:37Secion 0~2: Micro Service와 Spring Cloud 소개, Service Discovery, API Gateway

section 0. Microservice와 Spring Cloud의 소개 MSA 이걸 도대체 왜 할까? DB에 트랜잭션 잠금 등으로 시스템이 전면 마비가 되어버린다... 리뷰로 DDOS 공격 받듯이 요청이 왔는데... 주문이 마비 되어 버린다.. ㅠㅠ 일반적으로 Scale Out보다는 Scale Up이 더 저렴하다 MSA... 어떻게든 전면마비, 성능 문제, 확장 문제로부터 자유로워지고자 만들어진 시스템 ... section 1. Service Discovery Service Discovery: 서비스를 찾아서 탐색한다. 예) localhost:8001, 8002 등 각각 다른 서비스를 등록 localhost:8001 -> localhost/order 등 Discovery Service - Eureka..

IDEA에서 Kotlin을 사용 중 감동한 건에 대해서... (null 검증)
Back-end/Java, Kotlin2023. 5. 21. 20:58IDEA에서 Kotlin을 사용 중 감동한 건에 대해서... (null 검증)

주말에 코틀린 코딩 중에 감동을 했다... 바로 젯브레인 IDEA에서 리펙터링 추천을 한 거에 대한 건데... 평소 같으면 Optional의 orElseThrow를 통해서 예외 처리를 했겠지만, 코틀린의 문법 + IDEA의 지원을 믿었나 역시나 다를까... 위 캡쳐처럼 엘비스 연산으로 줄일 수 있는데, 안하겠냐고 추천을 한다!! 역시... 흑흑 감동 젯브레인과 그의 자녀 코틀린.. 난 오늘도 감동하면서 코딩을 한다 (쮸르륵...)

Gradle 성능 최적화
Back-end/Build (Gradle, Maven)2023. 5. 12. 02:30Gradle 성능 최적화

여러 블로그에서 소개한 방법대로 gradle.properties에 캐싱, 병렬처리 등을 추가해서 비교해보았다 사내 프로젝트를 기준으로 22초 -> 7초로 줄어든 것을 확인하였다... 작은 설정으로 큰 쾌거를 이루었다 참고 gradle build 속도 | 폭간의 기술블로그 (sejoung.github.io) Improve the Performance of Gradle Builds

Gradle 멀티 모듈하면서 배운 것들
Back-end/Build (Gradle, Maven)2023. 5. 12. 02:15Gradle 멀티 모듈하면서 배운 것들

Gradle을 통해서 멀티 모듈로 구성을 할 수 있다 나는 MSA를 하기 위해 구성했다 이렇게 하면 좋은 점 중 하나는 아래처럼 인텔리제이가 지원하는 기능을 사용할 수 있다 프로젝트 최상단에 build.gradle을 두면 각 모듈은 해당 파일을 기본적으로 먼저 해당 정보를 적용한다 allprojects { ... } subprojects { ... } allprojects는 루트 모듈과 모든 하위 모듈에 대해 subprojects는 루트 모듈을 제외한 모든 하위 모듈에 대해 적용을 하겠다는 block이다 이렇게 해서 공통 설정 정보를 몰아넣을 수 있다 만일 어떤 한 모듈만 루트의 build.gradle의 어느 한 의존성만 사용하고 싶지 않을 때가 있다 예를들어, 루트 build.gradle에는 톰캣 기반..

내가 깃헙 블로그에서 티스토리로 복귀한 현실적인 이유
기타2023. 5. 12. 01:23내가 깃헙 블로그에서 티스토리로 복귀한 현실적인 이유

현실적으로 다시 티스토리로 바꾼 이유는 "편리함" 때문이다 많은 블로그를 작성해왔다 처음에는 네이버, 그 다음에는 티스토리, 그 다음은 벨로그, 마지막으로 깃허브 페이지 각각의 장단점이 있었지만 가장 매력적으로 느껴진건 깃허브 블로그였다 깃허브 블로그에서 느껴지는 자유로움, 개발자 스러움, 거의 무한에 가까운 자유스러운 커스터마이징... 그러나 깃헙 블로그는 날 힘들게 하는 단점들도 존재했다 우선 이미지를 넣는게 번거롭다 이미지를 넣기 위해서는 (여러 방법이 있지만) 우선 아래와 같이 임의의 이슈에 이미지를 찍어서 올린 다음에 링크를 복사해야만 했다 문제는 그게 끝이 아니라 사진이 너무 클 경우에는 직접 가로 사이즈를 조정해서 preview로 확인해야만 했다 나같이 숫자 강박관념이 있는 사람은 1280,..

Spring Boot 3.x에서 H2 DB 설정
Back-end/Spring Boot, JPA2023. 5. 12. 00:10Spring Boot 3.x에서 H2 DB 설정

최근에 H2 DB를 사용하면서 복습겸 알게된 사실이 있어서 간단히 작성했다 먼저 스프링 부트 3.x 기준으로 더 이상 이전 버전의 H2를 설정할 수 없다 강의를 보며 MSA 프로젝트 진행 중, 기존 방식대로 되지 않아서 H2를 서버모드로 바꾸어서 진행했다 H2의 두 가지 모드:: Embed, 서버 모드 H2에는 Embed(내장)과 서버 모드가 있는데 Embed은 스프링 부트에 포함된 H2를 돌리는 것이고 서버모드는 직접 H2를 수동으로 실행한 후에 스프링 부트를 실행해서 접근해서 사용하는 방식이다 서버모드는 Embed와 달리 서버를 중단시켜도 데이터가 휘발되지 않는다 서버모드를 사용하기 위한 과정은 아래와 같다 1. H2를 실행 2. H2 Embed 설정으로 실행한후 서버 종료 3. H2 서버 모드로 실..

Java ZoneDateTime 에 대해서
Back-end/Java, Kotlin2023. 5. 8. 23:34Java ZoneDateTime 에 대해서

GMT, UTC부터 이해하면 많은 도움이 된다 우선 둘은 거의 동일한 용어이다 (실제로는 둘 사이의 시차가 몇미리초 정도 차이가 난다고 한다) 초기에는 영국에서 그리니치 천문시를 만들고 (GMT) 후에 UTC가 되었다 영국시 기준으로 0시라 가정할 때 우리나라는 상대적으로 +9시간을 더해서 시차를 계산한다 단순히 일시를 나타내는 LocalDateTime과는 달리 ZoneDateTime은 Zone에 따른 시차까지 고려한다 ZoneDateTime은 크게 두가지 정보 ZoneId는 아시아/서울 등의 지역 정보 ZoneOffset은 +9 등의 단순 시각 정보를 갖는다 ZoneOffset은 ZoneId를 상속한다 존이 다르더라도 epoch 시각으로 변환해서 대소관계를 비교할 수 있다 (isEqual()를 사용해야..

image