분류 전체보기
-
개요 Feign은 HTTP 요청을 생성하는 과정을 단순화하는 선언적 웹 서비스 클라이언트입니다. 개인적으로 선호하는 클라이언트여서 SpringCloud의 의존성을 추가하는 번거로움을 감수하고라도 사용하고 있습니다. 하지만 종종 Response 의 필드가 애플리케이션에서 예상하는 케이스와 일치하지 않는 상황이 발생합니다. 이를 처리하기 위한 과정을 기록합니다. GitHub Repository 문제상황 포스트 내에서 사용하는 Application Server는 SpringBoot 프로젝트를 의미하고, API Server는 외부에서 정보를 받아오는 서버로 용어를 사용할 예정이다. API Server의 필드는 snake_case를 사용하고 아래와 같은 JSON을 반환한다. { "date": "2023-12-21..
FeignClient에서 네이밍 전략 변환하기개요 Feign은 HTTP 요청을 생성하는 과정을 단순화하는 선언적 웹 서비스 클라이언트입니다. 개인적으로 선호하는 클라이언트여서 SpringCloud의 의존성을 추가하는 번거로움을 감수하고라도 사용하고 있습니다. 하지만 종종 Response 의 필드가 애플리케이션에서 예상하는 케이스와 일치하지 않는 상황이 발생합니다. 이를 처리하기 위한 과정을 기록합니다. GitHub Repository 문제상황 포스트 내에서 사용하는 Application Server는 SpringBoot 프로젝트를 의미하고, API Server는 외부에서 정보를 받아오는 서버로 용어를 사용할 예정이다. API Server의 필드는 snake_case를 사용하고 아래와 같은 JSON을 반환한다. { "date": "2023-12-21..
2024.01.11 -
개요 slueth-zipkin을 통해서 하나의 Request가 어떻게 어떤서비스에서 얼마의 시간을 소요하고 흘러가는지 확인할 수 있었다. 전통적으로 서비스는 개별로 로그를 보관한다. 로그를 확인하기 위해서 개별 서비스의 로그를 찾아가면서 확인하는 비효율적인 작업을 타개하기 위해 ELK Stack이 도입되었다. 각각 Elasticsearch, Logstash, Kibana 의 약어이다. 분산된 로그데이터들을 중앙화하고 분석과 검색, 시각화에 용이하게 수집 및 정리하는데 사용된다. ELK Stack Elasticsearch 로그를 저장하는 저장소 역할을 한다. 실시간으로 대용량 데이터를 검색하고 분석하는데 사용되는 오픈소스 검색 엔진이다. 기본적인 full-text 검색 뿐 아니라, 구조화된 데이터와 비구조..
분산환경은 로깅을 어떻게 할까개요 slueth-zipkin을 통해서 하나의 Request가 어떻게 어떤서비스에서 얼마의 시간을 소요하고 흘러가는지 확인할 수 있었다. 전통적으로 서비스는 개별로 로그를 보관한다. 로그를 확인하기 위해서 개별 서비스의 로그를 찾아가면서 확인하는 비효율적인 작업을 타개하기 위해 ELK Stack이 도입되었다. 각각 Elasticsearch, Logstash, Kibana 의 약어이다. 분산된 로그데이터들을 중앙화하고 분석과 검색, 시각화에 용이하게 수집 및 정리하는데 사용된다. ELK Stack Elasticsearch 로그를 저장하는 저장소 역할을 한다. 실시간으로 대용량 데이터를 검색하고 분석하는데 사용되는 오픈소스 검색 엔진이다. 기본적인 full-text 검색 뿐 아니라, 구조화된 데이터와 비구조..
2023.12.05 -
Spring Cloud Sleuth:3.0.4 docs 개요 최종적으로 trace를 통해 각 서비스의 로그를 파악하기 위한 수단은 Kibana인데 어떻게 각 서비스에서 수집된 데이터가 하나로 뭉쳐지는지에 대해서 궁금증이 생겼다. 현재 프로젝트에서 구성되어있는 트레이싱을 예측해보면 아래와 같다. 각각의 도메인 서버에서 spring-cloud-sleuth를 통해 수집된 정보를 logback 설정을 통해 JSON으로 샘플링하고 logstash -> Elasticsearch -> Kibana로 가는 구조로 보인다. 차례로 서비스들의 역할을 정리하고 예시로 기동까지 해볼예정이다. 이 글에서는 Spring-cloud-sleuth와 zipkin을 살펴볼것이다. spring-cloud-sleuth Spring Clou..
분산환경은 서비스 트레이싱을 어떻게 할까Spring Cloud Sleuth:3.0.4 docs 개요 최종적으로 trace를 통해 각 서비스의 로그를 파악하기 위한 수단은 Kibana인데 어떻게 각 서비스에서 수집된 데이터가 하나로 뭉쳐지는지에 대해서 궁금증이 생겼다. 현재 프로젝트에서 구성되어있는 트레이싱을 예측해보면 아래와 같다. 각각의 도메인 서버에서 spring-cloud-sleuth를 통해 수집된 정보를 logback 설정을 통해 JSON으로 샘플링하고 logstash -> Elasticsearch -> Kibana로 가는 구조로 보인다. 차례로 서비스들의 역할을 정리하고 예시로 기동까지 해볼예정이다. 이 글에서는 Spring-cloud-sleuth와 zipkin을 살펴볼것이다. spring-cloud-sleuth Spring Clou..
2023.11.30 -
@Primary가 있다면 Bean이름으로 주입이 안된다 별도의 설정을 한 RestTemplate Bean을 사용하려는데, 내부 라이브러리에 @Primary로 등록된 RestTemplateBean이 있었다. @Bean @Primary public RestTemplate restTemplate() { // some configuring source return restTemplate; } 위 설정과 다른 Bean을 프로젝트 내부에 생성하고 @Qualifier를 통해 주입하던것을 확인했다. @Bean public RestTemplate targetRestTemplate() { // the other configuring source return new RestTemplateBuilder() }; @Requir..
@RequiredArgsConstructor와 @Qualifier를 함께 쓰기@Primary가 있다면 Bean이름으로 주입이 안된다 별도의 설정을 한 RestTemplate Bean을 사용하려는데, 내부 라이브러리에 @Primary로 등록된 RestTemplateBean이 있었다. @Bean @Primary public RestTemplate restTemplate() { // some configuring source return restTemplate; } 위 설정과 다른 Bean을 프로젝트 내부에 생성하고 @Qualifier를 통해 주입하던것을 확인했다. @Bean public RestTemplate targetRestTemplate() { // the other configuring source return new RestTemplateBuilder() }; @Requir..
2023.11.28 -
Symbolic Link란? Windows에서 바탕화면에 바로가기 아이콘과 기능이 비슷하다. 폴더구조가 복잡하거나 깊은곳에 있는 폴더를 접근할때 유용하게 사용할 수 있다. Symbolic Link 생성 심볼릭 링크를 사용하기 위해선 ln 명령어를 사용해야 하는데, ln 명령어는 link 의 약자이다. ln 명령어의 옵션은 이 사이트에서 확인할 수 있다. /Users/autocat/dev/Personal 와 같은 폴더구조에서 Personal로 바로 가는 SybolicLink를 생성하는 명령어는 아래와 같다 # ln -s [TARGETF_OLDER] [SYMBOLIC_NAME] ln -s /Users/autocat/dev/Personal gopersonal ls 명령어를 통해 Symbolic link가 생성..
[Linux] Symbolic LinkSymbolic Link란? Windows에서 바탕화면에 바로가기 아이콘과 기능이 비슷하다. 폴더구조가 복잡하거나 깊은곳에 있는 폴더를 접근할때 유용하게 사용할 수 있다. Symbolic Link 생성 심볼릭 링크를 사용하기 위해선 ln 명령어를 사용해야 하는데, ln 명령어는 link 의 약자이다. ln 명령어의 옵션은 이 사이트에서 확인할 수 있다. /Users/autocat/dev/Personal 와 같은 폴더구조에서 Personal로 바로 가는 SybolicLink를 생성하는 명령어는 아래와 같다 # ln -s [TARGETF_OLDER] [SYMBOLIC_NAME] ln -s /Users/autocat/dev/Personal gopersonal ls 명령어를 통해 Symbolic link가 생성..
2022.12.30 -
Mysql에서 NOW() 를 통해 현자날짜로 TIMESTAMP 필드에 넣어주는데, 날짜가 현재시간과 일치 하지 않아서 타임존을 변경하려고 한다. 별도의 설정이 없다면 기본적으로 UTC로 설정이 되어있어 9시간의 차이가 나는것을 확인할 수 있다. Mysql CLI 진입 먼저 mysql 컨테이너의 ID값을 확인하고 CLI에 진입한다. CLI 가 뭐지? Command-Line Interface 로 터미널을 통해 사용자와 컴퓨터가 상호작용 하는 방식 ex) dos, commandPrompt, bash 로 대표되는 유닉스 Shell환경 terminal(MacOS), window terminal(Window) container의 ID값을 확인한 뒤 exec -it 명령어를 사용하여 진입한다. docker exec ..
[Docker] Mysql Timezone 변경Mysql에서 NOW() 를 통해 현자날짜로 TIMESTAMP 필드에 넣어주는데, 날짜가 현재시간과 일치 하지 않아서 타임존을 변경하려고 한다. 별도의 설정이 없다면 기본적으로 UTC로 설정이 되어있어 9시간의 차이가 나는것을 확인할 수 있다. Mysql CLI 진입 먼저 mysql 컨테이너의 ID값을 확인하고 CLI에 진입한다. CLI 가 뭐지? Command-Line Interface 로 터미널을 통해 사용자와 컴퓨터가 상호작용 하는 방식 ex) dos, commandPrompt, bash 로 대표되는 유닉스 Shell환경 terminal(MacOS), window terminal(Window) container의 ID값을 확인한 뒤 exec -it 명령어를 사용하여 진입한다. docker exec ..
2022.11.03 -
오늘 읽은 범위 : 5장. 형식 맞추기 책에서 기억하고 싶은 내용 타인이 내 코드를 읽을때 어수선해보인다면 그 사람은 프로젝트의 다른 측면도 똑같이 무성의하게 처리했을거라고 생각할것이다. 개발자라면 형식을 깔끔하게 맞춰 코드를 짜야한다. 형식을 맞추는 목적 코드 형식은 중요하다. 코드 형식 자체는 의사소통의 일환이며 개발자의 일차적 의무이다. 코딩 스타일과 가독성 수준은 유지보수와 확장성에 지대한 영향을 끼친다. 원활한 소통을 장려하는 코드형식 적절한 행 길이 유지 반드시 지킬 엄격한 규칙은 아니지만 바람직한 규칙으로 삼으면 좋겠다. 일반적으로 작은파일이 큰 파일보다 이해하기 쉽다. 적은 코드의 양으로도 커다란 시스템을 구축 할 수 있다. 신문 기사처럼 작성 잘짜여진 코드는 신문기사와 비슷하게 작성되어있..
Clean Code 제 5장. 형식 맞추기오늘 읽은 범위 : 5장. 형식 맞추기 책에서 기억하고 싶은 내용 타인이 내 코드를 읽을때 어수선해보인다면 그 사람은 프로젝트의 다른 측면도 똑같이 무성의하게 처리했을거라고 생각할것이다. 개발자라면 형식을 깔끔하게 맞춰 코드를 짜야한다. 형식을 맞추는 목적 코드 형식은 중요하다. 코드 형식 자체는 의사소통의 일환이며 개발자의 일차적 의무이다. 코딩 스타일과 가독성 수준은 유지보수와 확장성에 지대한 영향을 끼친다. 원활한 소통을 장려하는 코드형식 적절한 행 길이 유지 반드시 지킬 엄격한 규칙은 아니지만 바람직한 규칙으로 삼으면 좋겠다. 일반적으로 작은파일이 큰 파일보다 이해하기 쉽다. 적은 코드의 양으로도 커다란 시스템을 구축 할 수 있다. 신문 기사처럼 작성 잘짜여진 코드는 신문기사와 비슷하게 작성되어있..
2022.03.01 -
오늘 읽은 범위 : 4장. 주석 책에서 기억하고 싶은 내용 코드만이 자기가 하는일을 진실되게 말한다. 주석은 나쁜 코드를 보완하지 못한다 표현력이 풍부하고 깔끔하며 주석이 없는 코드가, 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다. 코드로 저지른 난장판을 주석으로 수습하려는건 깨끗한 코드를 위한 좋은 습관이 아니다. 주석은 코드에 저지른 실패를 만회하기위한 수단이 아니다. 대표적인 나쁜 주석 항목들을 읽으면 왜 나쁜 주석이라 말하는지 이해할 수 있을것 같다. 혼잣말을 주절거리는 주석 같은 이야기를 반복하는 주석 오해의 여지가 있는 애매한 내용을 담은 주석 의무적으로 다는 불필요한 주석 히스토리를 기록하는 주석 좋은 이름을 쓰지 않은 코드를 설명하는 주석 닫는 괄호에 다는 주석 (발전된 IDE..
Clean Code 제 4장. 주석오늘 읽은 범위 : 4장. 주석 책에서 기억하고 싶은 내용 코드만이 자기가 하는일을 진실되게 말한다. 주석은 나쁜 코드를 보완하지 못한다 표현력이 풍부하고 깔끔하며 주석이 없는 코드가, 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다. 코드로 저지른 난장판을 주석으로 수습하려는건 깨끗한 코드를 위한 좋은 습관이 아니다. 주석은 코드에 저지른 실패를 만회하기위한 수단이 아니다. 대표적인 나쁜 주석 항목들을 읽으면 왜 나쁜 주석이라 말하는지 이해할 수 있을것 같다. 혼잣말을 주절거리는 주석 같은 이야기를 반복하는 주석 오해의 여지가 있는 애매한 내용을 담은 주석 의무적으로 다는 불필요한 주석 히스토리를 기록하는 주석 좋은 이름을 쓰지 않은 코드를 설명하는 주석 닫는 괄호에 다는 주석 (발전된 IDE..
2022.02.25