lakeFS 아키텍처
lakeFS는 여러 논리적 서비스를 하나로 감싼 단일 바이너리로 배포돼요.
출처: 문서
본문
서버 자체는 상태 비저장(stateless)이라 더 큰 부하를 처리하기 위해 인스턴스를 손쉽게 추가할 수 있어요.
객체 스토리지
lakeFS는 다양한 객체 스토리지 플랫폼에 저장된 데이터를 관리해요:
-
AWS S3
-
Google Cloud Storage
-
Azure Blob Storage
-
MinIO
-
NetApp StorageGRID
-
Ceph
-
그 밖의 모든 S3 호환 스토리지
lakeFS Enterprise를 사용하면 멀티 스토리지 백엔드 지원을 활용해 온프레미스, 하이브리드, 멀티 클라우드 환경을 포함한 여러 스토리지 위치에 걸친 데이터를 관리할 수 있어요.
메타데이터 스토리지
메타데이터 저장에는 보조 키-값 스토리지가 사용되며, 지원되는 데이터베이스는 다음을 포함해요:
-
PostgreSQL
-
DynamoDB
-
CosmosDB
-
MemoryDB 또는 다른 Redis 호환 옵션 (lakeFS Enterprise)
위 옵션으로 lakeFS를 설정하는 방법은 설치 가이드와 설정 레퍼런스를 참고하세요
더 알아보기
lakeFS가 버저닝 메타데이터를 어떻게 관리하는지는 Versioning internals와 Internal database structure 문서에서 더 자세히 볼 수 있어요
로드밸런싱
lakeFS에 접근하는 방식은 HTTP예요. lakeFS는 프론트엔드 UI, OpenAPI 서버, 그리고 S3 호환 서비스(아래 S3 Gateway 참고)를 노출해요. lakeFS는 세 엔드포인트를 모두 서빙하는 단일 포트를 사용하므로, 대부분의 사용 사례에서 lakeFS 서버를 가리키는 하나의 로드밸런서면 충분해요.
lakeFS 컴포넌트
내부적으로 lakeFS 서버는 lakeFS가 배포되는 단일 바이너리를 이루는 몇 가지 핵심 조각으로 구성돼요:
S3 게이트웨이
S3 게이트웨이는 lakeFS 내에서 S3 호환성을 담당하는 레이어예요. 대부분의 데이터 시스템이 lakeFS를 S3의 드롭인 대체재로 사용할 수 있도록 S3 API의 호환 부분집합을 구현해요.
지원되는 API 연산에 대한 정보는 S3 API Reference 섹션을 참고하세요.
OpenAPI 서버
Swagger(OpenAPI) 서버는 lakeFS 연산 전체를 노출해요 (레퍼런스 참고). 여기에는 리포지토리와 객체에 대한 기본 CRUD 연산은 물론, 브랜칭, 머징, 커밋, 데이터 변경 되돌리기 같은 버저닝 관련 연산도 포함돼요.
스토리지 어댑터
스토리지 어댑터는 기반이 되는 어떤 객체 스토리지와도 통신하기 위한 추상화 레이어예요. 그 구현들은 S3, GCS, Azure Blob Storage 같은 많은 유형의 기반 스토리지와, 비프로덕션 용도인 로컬 스토리지 어댑터까지 호환성을 제공해요.
Graveler
Graveler는 lakeFS 주소를 실제 저장된 객체로 변환해 lakeFS 버저닝을 처리해요. lakeFS 메타데이터를 저장하는 데 사용되는 데이터 모델에 대해서는 버저닝 internals 페이지를 참고하세요.
인증 및 권한 부여 서비스
인증(Auth) 서비스는 사용자 자격 증명의 생성, 관리, 검증과 RBAC 정책을 처리해요.
자격 증명 방식과 요청 서명 로직은 AWS IAM(SIGv2 및 SIGv4 모두)와 호환돼요.
현재 인증 서비스는 자체 사용자·자격 증명 데이터베이스를 관리하며 IAM을 어떤 식으로도 사용하지 않아요.
훅 엔진
훅 엔진은 커밋/머지 중에 실행되는 사용자 정의 액션을 트리거해 데이터를 위한 CI/CD를 가능하게 해요.
UI
UI 레이어는 OpenAPI 서버를 사용하는 간단한 브라우저 기반 클라이언트예요. 시스템 안의 리포지토리, 브랜치, 커밋, 객체를 관리·탐색·접근할 수 있게 해 줘요.
lakeFS 클라이언트
일부 데이터 애플리케이션은 다양한 사용 사례나 lakeFS 클라이언트가 제공하는 향상된 기능을 지원하기 위해 lakeFS와 더 깊은 통합의 혜택을 봐요.
OpenAPI 생성 SDK
OpenAPI 사양은 여러 프로그래밍 언어용 lakeFS 클라이언트를 생성하는 데 쓸 수 있어요. 예를 들어 Python lakefs-sdk나 Java 클라이언트는 lakeFS의 새 릴리스마다 게시돼요.
lakectl
lakectl은 여러분이 선호하는 터미널에서 lakeFS API를 사용해 lakeFS 연산을 수행할 수 있게 해 주는 CLI 도구예요.
lakeFS Mount
lakeFS Mount는 원격 lakeFS 리포지토리를 로컬 디렉터리에 가상으로 마운트할 수 있게 해 줘요. 마운트되면 로컬 파일시스템에서 읽는 모든 도구, 라이브러리, 프레임워크로 데이터를 접근할 수 있어요. lakeFS Mount는 lakeFS Enterprise에서 제공돼요.
Spark 메타데이터 클라이언트
lakeFS Spark 메타데이터 클라이언트는 lakeFS 메타데이터와 관련된 연산을 대규모로 쉽게 수행하게 해 줘요. 예시로는 가비지 컬렉션이나 lakeFS에서의 데이터 익스포트가 있어요.
lakeFS Hadoop FileSystem
S3 게이트웨이 덕분에 Hadoop의 S3AFIleSystem으로 lakeFS와 상호작용할 수 있지만, S3 API의 제약 때문에 그렇게 하려면 lakeFS 서버를 통해 데이터 객체를 읽고 써야 해요. lakeFSFileSystem은 메타데이터 연산을 lakeFS 서버에서 실행하고 모든 데이터 연산을 lakeFS가 사용하는 것과 동일한 기반 객체 스토리지를 통해 직접 수행함으로써 Spark ETL 작업의 성능을 높여요.
lakeFS 클라이언트와 게이트웨이의 메타데이터·데이터 접근 처리 방식
Python SDK, lakectl, lakeFS Mount, lakeFS Spark 클라이언트 같은 네이티브 통합을 사용할 때, 이 클라이언트들은 메타데이터를 얻기 위해 lakeFS 서버와 통신해요.
예를 들어 어떤 파일 버전이 필요한지 파악하거나 브랜치와 커밋의 변경을 추적하기 위해 lakeFS에 쿼리할 수 있어요. 이 통신에는 실제 데이터 전송이 포함되지 않고, 대신 데이터 위치와 버전에 관한 메타데이터만 전달돼요.
클라이언트가 lakeFS 메타데이터에서 정확한 데이터 위치를 알면, lakeFS를 거치지 않고 기반 객체 스토리지의 데이터에 직접 접근해요 (필요시 pre-signed URL 사용).
예시
데이터가 S3에 저장되어 있다면 Spark 클라이언트는 lakeFS에서 pre-signed URL로서의 S3 경로를 받아, lakeFS를 데이터 전송에 개입시키지 않고 그 URL로 S3에서 직접 읽거나 써요.
Enterprise 배포 아키텍처
lakeFS Enterprise는 위에서 설명한 동일한 기반을 확장해, 프로덕션 조직이 의존하는 보안·거버넌스·지원 기능을 제공해요. SSO, RBAC, 감사 로깅, 마운팅이 포함돼요. 핵심 컴포넌트는 동일하므로 이 페이지의 모든 내용은 Enterprise 배포에도 적용돼요. 셀프 매니지드 Enterprise 배포는 lakeFS 서버 주변에 몇 가지를 더 추가해요. 아래 그림과 같아요.
lakeFS Enterprise 배포 컴포넌트
요청은 이 컴포넌트들을 거쳐 흘러가요:
-
사용자는 브라우저 UI 또는 SDK, HTTP API, lakectl을 이용한 프로그래매틱 접근으로 lakeFS에 도달해요.
-
NGINX, Traefik, Kubernetes Ingress, 로드밸런서 같은 리버스 프록시가 lakeFS 서버 인스턴스들 사이에 요청을 분배하고 SSL 종단을 처리해요. lakeFS 인스턴스를 두 개 이상 실행할 때는 이것이 필요해요.
-
lakeFS Enterprise 서버는 고급 보안, SSO 인증, RBAC 권한 부여, 컴플라이언스, 감사 로깅을 포함한 추가 엔터프라이즈 기능과 함께 lakeFS를 실행해요.
-
키-값 메타데이터 스토어는 버저닝 메타데이터를 보유하며 코어 lakeFS와 엔터프라이즈 기능 양쪽에서 사용돼요.
-
Azure AD, Okta, JumpCloud 같은 외부 SSO IdP가 사용자를 인증해요. lakeFS Enterprise는 SAML, OAuth2, OIDC 프로토콜을 구현하며, 설정하려면 IdP 쪽에서의 접근 구성도 필요해요.
셀프 매니지드 Enterprise 배포를 설치·운영하는 방법은 Enterprise 설치 가이드를 참고하세요. 세부 사항과 가격은 문의해 주세요.
더 알아보기 (Learn more)
공식 문서의 아키텍처 페이지는 https://docs.lakefs.io/concepts/architecture 에서 확인할 수 있어요.