OAuth 인증 패턴
Databricks Apps에서 Lakebase에 접근할 때, 두 가지 인증 패턴을 사용할 수 있습니다.앱 인증 (Service Principal)
앱 자체가 하나의 서비스 계정으로 인증합니다. 모든 사용자의 요청이 동일한 권한으로 처리됩니다.사용자 인증 (User Passthrough)
각 사용자의 Databricks 인증을 그대로 Lakebase에 전달합니다. 사용자별로 다른 권한을 적용할 수 있습니다.| 단계 | 구성 요소 | 설명 |
|---|---|---|
| 1 | 사용자 → Databricks App | Databricks OAuth로 인증합니다 |
| 2 | Databricks App → Lakebase | 사용자 토큰을 전달합니다 |
| 3 | Lakebase → Unity Catalog | Unity Catalog 권한을 확인합니다 |
| 인증 패턴 | 장점 | 단점 | 적합한 상황 |
|---|---|---|---|
| 앱 인증 | 설정 간단, 커넥션 풀 공유 | 사용자별 권한 구분 불가 | 내부 도구, 모든 사용자 동일 권한 |
| 사용자 인증 | 세밀한 권한 제어, 감사 로그 | 커넥션 풀 공유 어려움 | 멀티 테넌트 앱, 규정 준수 필수 |
커넥션 풀링 설정
프로덕션 앱에서는 커넥션 풀링(Connection Pooling) 이 필수입니다. 매 요청마다 새 연결을 생성하면 성능이 크게 저하됩니다.💡 커넥션 풀링(Connection Pooling): 데이터베이스 연결을 미리 여러 개 만들어 놓고, 요청이 올 때마다 재사용하는 기법입니다. 연결 생성/종료의 오버헤드를 줄여 응답 속도를 크게 향상시킵니다.
psycopg2 ThreadedConnectionPool
풀 크기 가이드라인
| 동시 사용자 수 | minconn | maxconn | 설명 |
|---|---|---|---|
| ~10명 | 2 | 5 | 개발/테스트 환경입니다 |
| 10~50명 | 5 | 15 | 소규모 프로덕션입니다 |
| 50~200명 | 10 | 30 | 중규모 프로덕션입니다 |
| 200명+ | 20 | 50+ | 대규모 프로덕션, PgBouncer 검토가 필요합니다 |
⚠️ maxconn 과다 설정 주의: 커넥션 풀의 최대 크기를 Lakebase 인스턴스의 최대 연결 수보다 크게 설정하면 연결 실패가 발생할 수 있습니다. 여러 앱이 동일한 Lakebase에 접속하는 경우, 전체 연결 수를 고려하여 설정하시기 바랍니다.
트랜잭션 관리
OLTP 앱에서 트랜잭션(Transaction) 관리는 데이터 정합성의 핵심입니다.💡 ACID 트랜잭션: Lakebase는 PostgreSQL과 동일한 ACID(원자성, 일관성, 격리성, 지속성) 트랜잭션을 지원합니다.commit()이 호출될 때까지 변경사항은 다른 연결에서 보이지 않으며,rollback()으로 모든 변경을 취소할 수 있습니다.