728x90

분류 전체보기 362

[Keycloak] Custom API

Keycloak를 도입하여 인증·인가를 간편하게 구성할 수 있지만, “Admin REST API”로는 사용자와 그룹 정보를 한꺼번에 조회하기가 쉽지 않습니다.이를 위해 RealmResourceProvider라는 확장(SPI)을 구현해 N+1 문제를 개선하고, 하나의 엔드포인트에서 사용자와 그들의 그룹 목록을 동시에 가져오는 방법을 소개합니다.문제: 기본 Admin API의 N+1 호출Keycloak에는GET /admin/realms/{realm}/users : 사용자 목록 (그룹 정보 X)GET /admin/realms/{realm}/users/{userId}/groups : 해당 사용자의 그룹 목록 엔드포인트만 제공됩니다.수많은 사용자에 대해 그룹 정보를 확인하려면,사용자 목록 API 호출 → 사용자 ..

Keycloak 2025.03.04

[GraphQL] 기본 문법

GraphQL은 클라이언트가 서버에 요청을 보낼 때 Operation(작업) 과 Selection Set(선택 집합) 을 포함하여 데이터를 주고받습니다.서버는 Object Type, Input Type, Scalar Type, Enum Type 등의 다양한 데이터 타입을 활용하여 API를 정의합니다.1. 클라이언트 → 서버 요청GraphQL 요청에는 Operation(작업) 과 Selection Set(선택 집합) 이 포함됩니다.🔹 Operation (작업 유형)GraphQL에서 클라이언트가 수행할 수 있는 작업(Operation)에는 Query, Mutation, Subscription이 있습니다.1) Query (조회 작업)데이터를 조회하는 작업HTTP GET 또는 POST 요청을 통해 실행됨que..

GraphQL 2025.03.03

[GraphQL] GraphQL Voyager

GraphQL Voyager는 GraphQL 스키마를 시각적으로 탐색할 수 있는 도구입니다.GraphQL API의 타입, 필드, 관계를 자동으로 분석하여 인터랙티브 다이어그램 형태로 보여줍니다.GraphQL Voyager의 주요 특징1. GraphQL 스키마를 자동으로 다이어그램화서버에서 제공하는 GraphQL 스키마를 분석하여 시각적으로 표현Entity 간의 관계(연관성, 종속성)를 직관적으로 확인 가능API 구조를 한눈에 파악 가능2. 실시간 탐색 (Interactive UI)다이어그램에서 엔티티를 클릭하면 세부 정보 표시특정 엔티티를 검색하여 빠르게 찾을 수 있음다이어그램을 드래그 & 줌(Zoom In/Out) 기능 지원3. API 문서화 및 이해도 향상복잡한 GraphQL API 구조를 한눈에 이..

GraphQL 2025.03.03

[GraphQL] Altair

Altair는 GraphQL API를 테스트하고 탐색할 수 있는 GraphQL 클라이언트(GraphQL Playground) 입니다.GraphiQL과 비슷한 도구이며, GraphQL API 개발자 및 클라이언트 개발자가 요청을 쉽게 보내고 응답을 시각화할 수 있도록 도와줍니다.Altair의 주요 특징1. 직관적인 UI 및 사용성GraphQL 쿼리를 작성하고 실행할 수 있는 깔끔한 UI 제공쿼리 히스토리 저장 기능 제공 (이전 요청 쉽게 확인 가능)멀티탭 기능 지원 (여러 개의 API를 동시에 테스트 가능)2. 다양한 인증 방식 지원API 테스트 시 헤더(Header) 및 인증(Authentication) 설정 가능JWT, Basic Auth, OAuth 등 다양한 인증 방식 지원GraphQL 서버에 인증..

GraphQL 2025.03.03

[GraphQL] GraphQL이란?

GraphQL은 Facebook이 개발한 API 쿼리 언어 및 실행 환경으로, 클라이언트가 원하는 데이터를 정확하게 요청할 수 있도록 설계되었습니다. REST API와 달리, 특정 엔드포인트가 아닌 단일 엔드포인트에서 요청을 처리하며, 클라이언트가 원하는 데이터 구조를 직접 정의할 수 있습니다.GraphQL의 특징1. 클라이언트가 원하는 데이터만 요청 가능 (Over-fetching & Under-fetching 해결)REST API는 고정된 응답을 반환하여, 불필요한 데이터가 포함될 수 있음 (Over-fetching).반대로 필요한 데이터를 가져오지 못해 추가 요청이 필요할 수 있음 (Under-fetching).GraphQL에서는 클라이언트가 필요한 데이터만 요청할 수 있도록 설계됨.query { ..

GraphQL 2025.03.03

Visitor Pattern

"데이터 구조는 그대로, 기능만 확장하고 싶을 때!"방문자 패턴은 객체 구조를 변경하지 않고 기능을 추가할 수 있는 강력한 패턴입니다.특히 데이터 구조는 안정적이고 기능이 자주 추가되는 경우에 적합합니다.하지만 새로운 데이터 구조를 추가하는 경우 유지보수가 어려울 수 있음을 고려해야 합니다.📌 방문자 패턴의 핵심 개념Visitor (방문자)객체의 데이터 구조를 변경하지 않고 새로운 기능을 추가하는 역할객체의 내부 구조를 알 필요 없이, 방문한 객체의 accept() 메서드를 통해 적절한 동작을 수행함Element (요소, 데이터 구조)방문자의 기능을 수락하는 역할 (accept(visitor))각 요소는 Visitor 인터페이스를 구현한 객체를 받아서 적절한 방문자를 실행함ConcreteVisitor ..

디자인 패턴 2025.03.03

[Linux] 마운트 개념 `df -h` 으로 이해하기

df -h 명령어란?df 명령어는 현재 시스템에 마운트 되어 있는 파일 시스템의 용량과 사용 현황을 보여줍니다. -h 옵션을 사용하면 사람이 읽기 편한 단위(GB, MB 등)로 표시하게 됩니다.예를 들어 다음과 같은 출력이 있을 수 있습니다.Filesystem Size Used Avail Use% Mounted on/dev/sda1 50G 30G 20G 60% //dev/sda2 100G 90G 10G 90% /home각 컬럼의 의미는 다음과 같습니다.Filesystem: 디스크 파티션 혹은 특정 스토리지 장치 경로Size: 해당 파일 시스템(파티션)의 총 용량Used: 현재 사용 중인 용량Avail: 남은 여유 용량Use%: 총 ..

CS/Linux 2024.12.11

로그 로테이트(Logrotate)

로그 로테이트(Logrotate)는 리눅스 시스템에서 로그 파일을 자동으로 관리해 주는 유틸리티입니다. 서버에서 생성되는 다양한 로그 파일을 주기적으로 압축, 삭제, 또는 백업하여 저장 공간을 절약하고 관리 효율성을 높여줍니다. 대부분의 리눅스 시스템에 기본적으로 설치되어 있으며, cron 작업으로 자동 실행되어 관리자의 개입 없이 로그 파일을 유지보수할 수 있습니다.로그 로테이트의 주요 기능로그 파일 주기 관리: 설정에 따라 매일, 매주, 매달 등의 주기로 로그 파일을 새로 생성합니다.백업 및 압축: 오래된 로그 파일을 gzip 등으로 압축해 저장 공간을 절약하고, 지정한 개수만큼만 보관합니다.자동 삭제: 설정된 개수를 초과하는 오래된 로그 파일은 자동으로 삭제해 불필요한 로그 파일이 누적되지 않도록 ..

DevOps 2024.11.12

[ElasticSearch] 클러스터와 노드

1. 엘라스틱서치 클러스터 개념클러스터 (Cluster)여러 개의 엘라스틱서치 인스턴스(노드)들이 모여서 하나의 클러스터를 구성합니다. 모든 노드는 클러스터 이름을 공유하며, 같은 클러스터 이름을 가진 노드들만이 클러스터의 일부로 간주됩니다.클러스터 ID 및 이름각 클러스터는 고유한 클러스터 ID를 가지며, 이름은 클러스터를 식별하기 위해 사용됩니다. 클러스터 이름은 설정 파일에서 정의할 수 있습니다 (elasticsearch.yml).2. 노드 유형엘라스틱서치 클러스터는 다양한 역할을 수행하는 여러 노드로 구성됩니다. 각각 하나의 역할만 할 수 있는 게 아니라 한 번에 여러 개의 역할을 할 수 있습니다.마스터 노드 (Master Node)클러스터의 상태를 관리하고 클러스터의 메타데이터(예: 인덱스, 노..

[ElasticSearch]모니터링: Prometheus와 X-Pack

Prometheus를 이용한 모니터링Prometheus는 오픈 소스 시계열 데이터베이스로, 메트릭 수집과 모니터링에 최적화된 도구입니다. Grafana와의 연동을 통해 시각화도 용이하게 할 수 있습니다. Elasticsearch 8과 통합하여 클러스터의 성능과 상태를 실시간으로 모니터링할 수 있습니다.Prometheus의 장점• 확장성: 대규모 클러스터에서도 성능 저하 없이 대량의 메트릭을 효율적으로 처리할 수 있습니다. • 경고 기능: Prometheus Alertmanager를 통해 다양한 조건의 경고를 설정하고 관리할 수 있습니다. • 강력한 시각화: Grafana와의 통합을 통해 고도화된 대시보드를 구축할 수 있습니다.Prometheus의 단점• 설치 및 설정 복잡성: Prometheus, Exp..

728x90