일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 배포
- 스프링 부트
- 스프링 배치
- CI/CD
- 백엔드
- ORM
- JPA
- Container
- HTTP
- 가상화
- spring boot
- 스프링 시큐리티
- CS
- spring cloud
- virtualization
- 도커
- 자바
- web server
- 영속성 컨텍스트
- 웹 서버
- Spring
- Java
- 컨테이너
- computer science
- 스프링
- spring batch
- mysql
- 데이터베이스
- vm
- Spring Security
- Today
- Total
목록2025/02 (8)
개발 일기
SQLD를 공부했었는데 그때 윈도우 함수에 대해 제대로 이해하지 못하고 통과 해버린 것 같았다.SQL을 공부하면서 뭔가 그룹을 지어서 그 그룹에 대한 통계를 내는 용도로 쓰이는 걸 봤는데 GROUP BY랑 도대체 뭐가 잘 알지 못했다.그래서 도대체 뭐가 다른지 그리고 어떻게 쓰이는지에 대해 간단히 정리해보게 됐다.윈도우 함수(Window Function)SQL의 윈도우 함수란 행과 행 간을 비교, 연산, 정의하기 위한 함수이다. 분석함수 또는 순위함수라고 하기도 한다. 다른 함수들처럼 중첩해서 사용할 수는 없지만 서브쿼리에서는 사용가능하다.❓그래서 GROUP BY랑 뭐가 다른데?가장 큰 차이는 아마 결과(출력) 방식. 즉, 데이터의 유지 방식인 것 같다.조금 더 풀어서 설명해보자면 GROUP BY의 경우..

Apache Kafka 공식 홈페이지에 들어가보면 설명이 있다.Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications. 개인적으로는 distributed event streaming platform에 집중하면 좋을 것 같다. 왜 distributed인지는 Kafka의 구조를 찾아보니 감을 잡을 수 있었다.Kafka의 기본 구조Kafka의 전체적인 구조를 정리하면 다음과 같다.Kafka 클러스..

https://ai-back-end.tistory.com/143 [Spring Cloud] Spring Cloud Config Server - 1기존의 단일 프로젝트 멀티모듈 아키텍처에서는 GitHub Submodule을 사용하여 민감한 정보를 관리하고, 설정 파일이나 시크릿을 별도의 Private Repository로 분리하여 관리했다. 그러나 현재 마이크로서ai-back-end.tistory.com 이전 게시글에서 Spring Cloud Config Server가 뭐하는 놈이고 어떻게 구성되어있으며 어떻게 동작하는지 알아봤다.그런데 이때 Config Server를 이용하면 설정 정보들이 변경되어도 서버를 다시 빌드하지 않아도 된다는 장점이 있다고 했는데 /actuator/refresh를 통한 설정 ..

기존의 단일 프로젝트 멀티모듈 아키텍처에서는 GitHub Submodule을 사용하여 민감한 정보를 관리하고, 설정 파일이나 시크릿을 별도의 Private Repository로 분리하여 관리했다. 그러나 현재 마이크로서비스 아키텍처로의 이전 과정에서는 각 서비스마다 GitHub Submodule을 별도로 관리해야 하는 상황이 발생했다. 이로 인해 각 서버마다 서브모듈을 갱신하고 설정을 수정한 후 다시 빌드 및 배포하는 과정이 필요해져, 관리 오버헤드가 크게 커졌다.그래서 위의 문제를 해결하기위해 중앙 집중식으로 처리해줄 수 있는 Spring Cloud Config Server에 대해 정리해보게 됐다.Spring Cloud Config란?Spring Cloud Config는 분산 시스템에서 외부화된 설정 ..

기존에 단일 프로젝트의 멀티 모듈 아키텍처에서 인증·인가를 담당하는 auth 모듈을 구축했다.이때 해당 auth 모듈을 통해 각 api 모듈로 요청을 라우팅할 수 있으면 좋았겠지만, 단일 애플리케이션 내에서는 API Gateway 패턴을 적용할 수 없었고 결국, auth 모듈을 각 api 모듈에서 직접 의존하여 인증·인가를 처리하는 방식으로 구현해야 했다. 해당 방식은 어쨋든 인증·인가 로직을 하나의 모듈에서 처리하고, 라이브러리처럼 필요한 api 모듈에서 이를 의존하여 사용하는 형태였지만, 아키텍처적으로는 중앙 집중식으로 처리하는 API Gateway 패턴과는 차이가 있어 아쉬웠다. 그러나 이번에 Eureka 기반의 MSA 아키텍처를 구축하면서 Spring Cloud Gateway를 도입하게 되어 정리..

https://cloud.spring.io/spring-cloud-netflix/reference/html/#netflix-eureka-client-starter Spring Cloud NetflixThis project provides Netflix OSS integrations for Spring Boot apps through autoconfiguration and binding to the Spring Environment and other Spring programming model idioms. With a few simple annotations you can quickly enable and configure the common patcloud.spring.io쿠버네티스를 도입하려다가 데드..

Segment Tree 초기화 Segment Tree 구간 합 구하기 Segment Tree 값 업데이트 (기존 값과 바꿀 값의 차를 통한 업데이트) diff를 활용한 update방식보다 해당 코드가 더 직관적인듯 시간 복잡도트리 초기화 (init)세그먼트 트리는 완전 이진 트리로, 전체 노드 개수는 O(2N) (약 4N)init 함수는 한 번의 호출당 O(1), 전체적으로 O(N)시간 복잡도: O(N)구간 합 조회 (sum)이진 트리의 높이는 O(log N)sum 함수는 트리를 따라 내려가며 분할 정복, 최악의 경우 O(log N) 개의 노드를 방문시간 복잡도: O(log N)값 업데이트 (update)특정 위치의 값을 변경하면, 관련된 모든 부모 노드를 업데이트해야 함update 함수는 이진 트리..

현재 프로젝트를 컨테이너 기반의 MSA 환경으로 구축하고, Kubernetes를 활용해 오케스트레이션하려 한다.단순히 독립적인 배포 및 유지보수를 용이하게 하고, 대용량 트래픽이 발생할 경우 전체 시스템이 아니라 특정 기능만 확장할 수 있도록 하기 위해 도입을 고려 중이다. 다만, 개념적으로만 알고 있어 이를 더 명확히 정리하고자 한다.우선 컨테이너화는 왜 필요한지 다시 짚고 가자.Why Container? Relation과 History를 말끔히 해결해준다.Relation 문제 해결기존 가상 머신은 각 VM이 Guest OS를 가지고 있으며, 이를 실행하기 위해 Host OS와 Hypervisor를 거쳐야 한다. 이 과정에서 리소스 오버헤드가 발생하고, 성능 저하가 불가피하다.반면, Docker 컨테이..