본문 바로가기

분류 전체보기250

2024-07-24 학습일기 스프링어제 만들었던 로그 추적기는 Trace(HTTP 트랜잭션(?)의 ID, Level)의 동기화를 Trace 클래스를 관리하는 클래스 내부에서 한 것이 아닌 Controller, Service, Repository에서 관리 클래스가 제공하는메소드를  직접 호출해 동기화를 진행했다. 하지만, 위의 경우 관리 클래스 내부적으로 변경이 있거나(심지어 더 좋게하는 변경일지라도) Trace 자체가 변경이 되었을 때Controller, Service, Repository 전부에서 관련된 코드를 수정해주어야 하는 불편함이 있었다.만약, 인터페이스가 관련되어 있다면 작업된 코드가 커질수록 고쳐야 할 것은 산더미로 불어날 것이다. 따라서, 동기화를 관리 클래스 내부에서 진행하여 Controller, Service, R.. 2024. 7. 24.
2024-07-23 학습일기 스프링스프링 AOP를 이해하기 위한 로그 추적기를 직접 구현해봤다. 커스텀하여 만든 로그 추적기는 우선 Controller - Service - Repository에 거의 반복되는 작업을전부 다 해줘야 한다. 이는 비효율적인 작업이라고 할 수 있다. 또한, 로그 추적기 클래스 내부에 변동이 있거나 다른 코드를 추가해줘야 하는 경우관련된 모든 클래스를 다 바꾸어야 한다.(인터페이스가 껴있다면 더 위험)  JenkinsSonarQube을 Jenkins 파이프라인과 함께 연동하며 관련된 지식을 학습Jenkins를 Master - Slave 구조로 구성 및 빌드 테스트 알고리즘해시 테이블 3문제폰켓몬베스트앨범의상 2024. 7. 23.
[백준] MooTube (Silver) - Java 15591 문제를 올바르게 이해하는 것이 중요하다. 시간복잡도BFS를 Q번 반복하는 문제이다. 인접리스트 BFS의 시간복잡도는 통상적으로 O(V+E)">O(V+E)이므로, 시간복잡도는 O(Q×(V+E))">O(Q×(V+E))가 된다. V와 E는 각각 최대 5000이고, Q는 최대 5000이다.(5000+5000)×5000=104×5×103=5×107<108">(5000+5000)×5000 10^8 == 100000000(1억)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class BOJ1.. 2024. 7. 22.
[Jenkins] Docker 컨테이너로 Ansible 실행하기 Ansible 설치먼저 Ansible를 설치할 도커 리눅스 환경을 구성해야 한다.해당 리눅스 환경 구성과 관련해서는 다음 포스팅을 참고하면 된다 -> SSH, Docker 도커 이미지 구성  (후술할 내용은 나의 리눅스 컨테이너 환경에 맞춰 진행한 것으로 파이썬 버전, OS에 따라 알맞게 설치를 진행해야 한다.)(필자의 경우 centos 8를 사용하였고 오히려 돌아간 것일 수 있다. 기본적으로 yum -y install ansible를 입력하면 설치된다.)그 후 작업은 아래와 같다. 1. pip 및 setuptools 업그레이드pip3 install --upgrade pip setuptools 2. Rust 도구 체인 설치 및 업그레이드dnf install rust cargo Ansible 설치 과정에 .. 2024. 7. 21.
[DevOps] Configuration Drift Configuration Drift Configuration Drift는 예상치 못한 인프라 변경에 따른 사고를 의미한다. AWS와 같은 클라우드 서비스에서 인프라 관리자로 일하고 있다고 가정해보자.일반적으로 IAM을 통해 각 팀 또는 개인에게 필요한 만큼의 권한을 주고 인프라를 사용할 수 있게 할 것이다.하지만, 실제로는 각자의 손에 도구를 쥐어줄 경우 모두가 이를 제대로 사용하리라는 법은 없기 마련이라고 한다.예를 들어, 프로덕션 레벨에 있는 어떤 특정한 인스턴스를 권한을 갖고 있는 누군가가실수로 삭제해서 제품에 영향을 미칠 경우 이를 어떻게 알아내고, 어떻게 고칠 수 있을까?물론, 꼭 지우는 것만이 위험 요소가 아니다.어떤 보안 그룹의 설정을 변경하여 시스템 전체에 영향을 미치는 경우는 또 어떨까?.. 2024. 7. 21.
[Jenkins] IaC와 Ansible이란? 포스팅 시작에 앞서 이번 포스팅에서는 Jenkins에 관해 다루지 않는다. IaC와 Ansible이란 무엇인지에 대해 다룬다.    IaC의 의미와 필요성먼저, 설명하자면 IaC로 인프라를 구성하게 되면 기존의 인프라를 수동으로 구성하는 방법보다훨씬 빠른 구성이 가능하다. IaC코드형 인프라(Infrastructure as Code), 즉 IaC는 인프라 설정을 코드로 작성하는 것으로,클라우드 인프라스트럭처의 생성/수정/삭제를 자동화하는 방법이다. 이는 서버, 데이터베이스, 네트워크, 배포 프로세스, 테스트 등 거의 모든 것을 코드로 관리할 수 있게 도와준다.현재와 같은 클라우드 네이티브 환경에서는 물리적 측면이 모두 코드로 대체될 수 있기에 가능하다고 할 수 있다. 비슷하게, IaC는 활용에 따라 인프.. 2024. 7. 20.