Odoo 대규모 기업에서 느리게 느껴지는 이유와 해결 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
Odoo ERP 시스템을 대규모 기업에서 사용하는 개발자 및 DevOps 엔지니어
핵심 요약
- 성능 저하 원인 1: 부적절한 개발 관행 - ORM 비효율적 사용, N+1 쿼리 문제, 배치 작업 미사용 등이 주요 원인
- 성능 저하 원인 2: DevOps 관리 소홀 - 데이터베이스 분할 미비, VACUUM/ANALYZE 작업 누락, 워커 스케일링 부족
- 최적화 전략 -
read_group
,sudo()
,prefetching
활용, PostgreSQLEXPLAIN
사용, 계산 필드 최적화
섹션별 세부 요약
1. 부적절한 개발 관행
- ORM 비효율:
.search()
또는.browse()
를for
루프 내부에서 사용해 N+1 쿼리 발생 - 코드 중복: 모듈 간 중복된 코드로 인한 성능 저하
- 배치 작업 무시:
read_group
,sudo()
,prefetching
사용 미비로 인한 대규모 데이터 처리 지연 - Computed Field 오용:
store=True
와 인덱싱 미적용으로 성능 저하
2. DevOps 관리 소홀
- 데이터베이스 분할 미비: PostgreSQL의 파티셔닝/셔딩 기능 미활용
- VACUUM/ANALYZE 누락: 시간이 지남에 따라 쿼리 성능 저하
- 모니터링 부족: 느린 쿼리 탐지 지연으로 인한 문제 확대
- 워커 스케일링 부족:
limit_memory_soft
,workers
설정 미적용으로 동시 사용자 처리 불가
3. 최적화 전략
- 계산 필드 최적화:
store=True
설정 및 인덱싱 적용 - 비동기 작업 이동: UI 대신
cron
으로 무거운 작업 처리 - 코드 프로파일링:
auto_profile
도구 또는 Odoo 내장 로그 사용 - 쿼리 분석: PostgreSQL
EXPLAIN
활용해 인덱스 추가 - 대규모 모델 분할:
account.move
또는stock.move
를 연도별로 분할 - 제3자 모듈 검토: 숨은 비효율성 원인 확인
4. 결론
- Odoo 자체 문제 아님: 확장성과 성능은 개발 관행 및 DevOps 전략에 달려 있음
- 핵심 권장사항:
- ORM 최적화 및 배치 작업 사용
- PostgreSQL EXPLAIN
으로 쿼리 분석
- 데이터베이스 파티셔닝 및 자동 VACUUM/ANALYZE 설정
- limit_memory_soft
, workers
파라미터 조정
결론
Odoo의 성능 저하 문제는 개발 관행 및 인프라 관리에 기인하며, 이를 해결하려면 ORM 최적화, PostgreSQL EXPLAIN
활용, 데이터베이스 분할, 자동 스케줄링 등 DevOps 전략을 철저히 적용해야 합니다. 초기부터 품질 높은 개발과 모니터링 툴을 도입하면 대규모 기업에서도 Odoo는 확장성이 뛰어난 ERP 시스템으로 활용 가능합니다.