LexQLexQ
블로그로 돌아가기

Drools vs Cloud 룰 엔진: Self-Hosted vs Managed 비교 (2026)

Drools는 룰 엔진 오픈소스의 기본입니다. 다만 Drools의 README는 self-hosting의 진짜 비용을 말하지 않습니다. 2026년에 Drools, GoRules, DecisionRules.io, Camunda, LexQ를 비교합니다.

Sanghyun Park·2026년 4월 29일2026년 9월 30일 수정13분 읽기

룰 엔진을 검토하기 시작하면 어느 지점에서든 Drools를 만나게 됩니다. 15년 넘게 오픈소스 진영의 기본 선택지였으니 피해 갈 도리가 없습니다.

장점도 분명합니다. JVM에서 그대로 돌아가고, 라이선스 비용이 없고, 오래 굴러온 만큼 성숙합니다. 이 중에서 결정을 밀어붙이는 건 대개 두 번째입니다. 그리고 가격표에 없는 항목이 실제 지출의 대부분을 차지합니다.

Drools를 도입하면 어려운 쪽은 DRL 문법보다 엔진 운영입니다. 그런데 도입을 검토하는 자리에서는 이 운영 비용이 빠지기 쉽습니다.

2026년에 Drools의 대안을 찾고 있다면 짚을 것이 넷입니다. 먼저 Drools가 실제로 어떻게 동작하는지 정리하고, GitHub README가 값을 매기지 않는 자체 호스팅 비용을 항목별로 세어 봅니다. 그다음 관리형 클라우드 룰 엔진이 그 비용 중 무엇을 대신 지고 그 값으로 무엇을 포기하게 하는지 보고, 마지막으로 팀 조건에 따라 어느 쪽을 고를지 정리합니다.

Drools가 실제로 하는 일

Drools는 Java로 작성된 forward-chaining 룰 엔진입니다. 규칙은 DRL(Drools Rule Language)이라는 declarative 문법으로 쓰고, 컴파일된 규칙은 PHREAK 위에서 평가됩니다. PHREAK은 Rete 알고리즘을 발전시킨 것입니다.

동작 구조는 단순합니다. facts, 그러니까 Java 객체를 엔진에 넣으면 조건을 평가하고, 조건이 맞은 규칙의 actions를 발화합니다. action은 working memory를 바꾸거나 애플리케이션 코드를 호출합니다.

엔진 하나만 쓰는 경우는 드뭅니다. 곁에 붙는 도구는 버전마다 다릅니다.

  • KIE Server와 Business Central: 규칙 아티팩트(KJAR)를 올려 돌리던 독립 Java 서비스와, 그 규칙을 편집하던 웹 화면입니다. Drools 8부터는 둘 다 빠졌습니다. 공식 문서에는 규칙 이력은 git으로 관리하고, 편집은 VS Code 확장에서 하라고 적혀 있습니다.
  • Kogito: KIE Server를 대신한 런타임입니다. 규칙과 결정은 직접 만드는 Quarkus나 Spring Boot 서비스의 일부로 실행되고, 그 서비스 하나하나는 업무 영역 하나를 맡는 독립 서비스입니다.
  • Drools Maven plugin: DRL을 배포 가능한 아티팩트로 컴파일하는 빌드 파이프라인입니다.

엔진 자체는 좋습니다. PHREAK은 규칙 그래프가 복잡해져도 빠르고, 언어 표현력도 풍부합니다. 단순한 할인 로직부터 여러 단계를 거치는 underwriting 워크플로우까지 담을 수 있습니다. 핀테크의 한도 산정, 심사, 승인 결정이 그런 워크플로우입니다.

문제는 Drools가 아닙니다. Drools를 둘러싼 나머지 전부입니다.

직접 운영하는 Drools에 드는 진짜 비용

팀들이 값을 매기는 방식은 대개 이렇습니다. 무료 라이선스와 SaaS 구독료를 나란히 놓고, 거기서 멈춥니다.

그 비교에서 빠지는 항목이 다섯 개 있습니다.

1. JVM 운영

Drools는 in-process로 돌아갑니다. 애플리케이션 JVM 안이거나 Kogito 서비스의 JVM 안입니다(Drools 7에서는 KIE Server). 어느 쪽이든 아래 세 가지는 직접 책임집니다.

먼저 heap 튜닝입니다. 룰 세션이 working memory에 facts를 들고 있기 때문에, stateful session을 잘못 잡아 두면 부하가 몰릴 때 OOM이 납니다.

GC 압박도 있습니다. forward-chaining은 객체 할당이 많습니다. 결국 G1과 ZGC 중 무엇을 쓸지 따져 보는 자리까지 갑니다.

JVM 업그레이드가 남습니다. Drools 8은 Java 11 이상, 지금 Apache KIE의 최신 버전인 Drools 10은 Java 17 이상이 필요합니다. 운영 중인 시스템에서 이 마이그레이션을 하는 일은 만만치 않습니다.

이 비용의 크기는 팀에 따라 다릅니다. 이미 JVM 운영에 깊이 들어가 있는 플랫폼팀이라면 부담이 조금 늘어나는 정도입니다. 그렇지 않다면 사람을 뽑거나 배워야 하는 새 전문 영역이 하나 생깁니다. 룰 엔진 RFP에는 이 항목이 적히지 않습니다.

2. 규칙 배포 파이프라인

규칙의 물리적 단위는 KJAR입니다. 컴파일된 DRL과 메타데이터를 묶은 Maven 아티팩트입니다. KIE Server를 쓰는 Drools 7에서는 규칙 하나를 바꾸려면 다섯 단계를 지납니다.

  1. Business Central이나 IDE에서 DRL 편집
  2. 새 KJAR 빌드 (Maven)
  3. Maven 저장소에 push
  4. KIE Server의 deployment를 새 버전으로 갱신
  5. 규칙이 적용되었는지 검증

Drools 8부터는 KIE Server가 없습니다. 규칙이 애플리케이션이나 Kogito 서비스에 함께 묶여 배포되므로, 규칙 하나를 바꿔도 그 애플리케이션이나 서비스를 다시 빌드하고 다시 배포해야 합니다.

단계를 건너뛰는 dynamic loading 패턴이 있기는 합니다. 대신 단순함을 런타임 리스크와 맞바꾸는 거래입니다.

그런 패턴을 쓰지 않으면 결과는 이렇습니다. 30초면 끝날 규칙 변경 하나 때문에, 마이크로서비스 릴리스 절차에 가까운 두 번째 배포 파이프라인을 운영하게 됩니다.

3. 스케일링과 상태 관리

Stateless 룰 세션은 선형으로 확장됩니다. stateful 세션은 그게 안 됩니다.

방법이 둘 있고 둘 다 값을 치릅니다. sticky session으로 요청을 같은 인스턴스에 묶으면 수평 확장이 깨집니다. working memory를 밖으로 빼면 외부 저장소와 그 정합성을 새로 떠안습니다.

그래서 운영에 올라간 Drools 배포는 대부분 stateless로 수렴합니다. 표현력 때문에 stateful을 골랐더라도, 운영이 그걸 도로 회수해 갑니다.

4. 관측성

장애가 나기 전까지는 아무도 이 얘기를 꺼내지 않습니다.

Drools가 주는 것은 있습니다. listener를 적절히 켜면 어떤 규칙이 발화했고 어떤 조건이 매칭됐는지 볼 수 있습니다. 주지 않는 것은 그 뒤입니다. 이미 쓰고 있는 observability 스택, Datadog이나 Grafana나 Jaeger에 그 정보를 연결하는 일은 직접 만들어야 합니다.

문제는 대개 이런 모양으로 옵니다. 규칙을 올린 지 1년쯤 지난 어느 날 고객이 이 거래는 왜 차단되었냐고 물어 옵니다. 그때 답을 찾겠다고 로그를 grep 하고 있습니다.

5. 플랫폼팀 종속성

Drools로 만든 시스템에서 규칙을 바꾸는 일은 전부 엔지니어링을 거칩니다.

Drools 7에서는 Business Central이 있어서, 이론상으로는 제품팀이 규칙을 직접 쓸 수 있었습니다(Drools 8부터 권장 편집기는 VS Code 확장입니다). 실무에서는 의미가 조금이라도 있는 로직이면 개발자를 거칩니다. 의도를 DRL로 옮기고, 빌드하고, KJAR을 배포하고, 동작을 확인합니다.

약속은 운영팀이 규칙을 바꿀 수 있다는 것이었습니다. 현실은 엔지니어가 다음 스프린트에 처리한다는 것입니다.

JVM 운영, 배포 파이프라인, 스케일링, 관측성, 플랫폼팀 종속성. 하나씩은 견딜 만하고, 합치면 성격이 달라집니다. Drools 배포는 어느 순간 사람이 상주해야 하는 작은 플랫폼이 됩니다.

조직 안에서는 이렇게 나타납니다. 엔지니어 한 명이 조용히 Drools 담당자가 됩니다. 직함에는 없고, 원래 하던 일은 그대로 있고, 규칙과 관련된 질문은 전부 그 사람에게 갑니다.

관리형 클라우드 룰 엔진으로 옮기면 달라지는 것

관리형 룰 엔진의 거래는 명확합니다. 방금 센 다섯 비용을 벤더에게 넘깁니다. 받는 것은 API endpoint와 규칙 편집 UI입니다. JVM 튜닝도, 배포 인프라도, 스케일링도 남의 일이 됩니다.

실행과 버전 관리와 감사 기록을 한 제품으로 묶은 범주를 의사결정 운영 플랫폼이라고 부릅니다. 의사결정 운영 플랫폼이 무엇을 포함하고 언제 필요한지는 따로 정리해 두었습니다.

넘기는 대신 받는 제약이 네 가지입니다.

  • 네트워크 홉이 하나 늘어납니다. 규칙 평가가 public API를 지나가므로, p99를 10ms 아래로 잡아야 하는 경로에서는 이게 결정적입니다.
  • 벤더 lock-in입니다. 관리형 시스템에 쓴 규칙 정의는 portable하지 않습니다. 나가려면 다시 씁니다.
  • 규제 준수입니다. 일부 규제 환경에서는 의사결정 데이터를 외부 경계 밖으로 내보내지 못합니다. 특정 healthcare 워크로드, 금융, 공공이 여기 해당합니다.
  • 규칙 표현력입니다. Drools는 일부 관리형 엔진이 지원하지 않는 temporal reasoning과 복잡한 chaining을 지원합니다. 대부분의 기업에는 필요 없고, 일부에는 필요합니다.

이 네 가지에 걸리지 않는다면, 제품팀에게는 관리형 쪽이 나은 선택입니다. 놓고 볼 만한 선택지는 다섯입니다. 호스팅과 기능에 관한 사실은 2026년 9월 30일에 각 회사의 페이지로 확인했습니다. 강점과 약점 칸의 나머지는 판단입니다.

도구호스팅강점약점
Drools자체 호스팅 JVM가장 표현력 높은 규칙 언어, 성숙한 생태계비교 옵션 중 가장 무거운 운영 부담
GoRules엔진은 오픈소스, 규칙 관리 도구(BRMS)는 관리형 클라우드 또는 자체 호스팅JDM(JSON Decision Model) 의사결정 그래프와 의사결정 테이블작은 커뮤니티, 적은 integration
DecisionRules.ioSaaS, 프라이빗 클라우드, 자체 호스팅빠른 onboarding, 폭넓은 템플릿테스트는 기대 출력을 적어 둔 케이스까지, 결정 이력 감사는 Premium 플랜부터
Camunda DMN자체 호스팅 또는 SaaS이미 Camunda BPMN을 쓴다면 강함Camunda 전체 스택에 묶임
LexQSaaS내장 시뮬레이션, 전체 감사 기록, MCP 네이티브신생(작은 생태계, On-premise 미지원)

Drools는 이미 후보에서 뺐고 클라우드 엔진끼리 비교하는 단계라면, GoRules와 Nected를 LexQ와 같은 기준으로 놓고 본 비교가 더 가깝습니다.

여기서 밝힙니다. 표의 마지막 줄, LexQ를 만든 사람이 접니다.

LexQ를 만든 동기는 더 빠른 Drools가 필요해서가 아니었습니다. 빈자리는 엔진 바깥에 있습니다. Drools를 고른 팀은 시뮬레이션 harness, 감사 기록, 배포 파이프라인 같은 주변부를 직접 만들어야 하고, 여기에 몇 달이 듭니다. LexQ는 그 주변부를 하나의 제품으로 만든 것입니다.

LexQ는 의사결정 운영 플랫폼입니다. Drools와 견줘 강조하는 차이는 셋입니다.

  • 실제 운영 데이터로 규칙 변경의 영향을 미리 확인하세요. 내장된 변경 영향 시뮬레이션이 대상 버전을 과거 운영 실행 데이터에 그대로 돌려서 무엇이 달라지는지 보여 줍니다.
  • 모든 의사결정의 흐름과 근거를 명확하게 파악하세요. 실행 한 건마다 executionTraces와 decisionTraces가 함께 돌아옵니다. 앞쪽에는 평가된 모든 규칙과 매칭 표현식이 들어 있고, 뒤쪽에는 최종적으로 이긴 규칙과 사유 코드가 들어 있습니다.
  • 안전하게 배포하세요. git 스타일 버저닝을 쓰고, 초안에서 발행됨을 거쳐 운영 중으로 갑니다. 문제가 있으면 즉시 롤백합니다. Maven도, artifact 승격도, JVM 재시작도 없습니다.

시뮬레이션을 부가 기능이 아니라 엔진의 기본 동작으로 만든 이유는 따로 썼습니다.

실행 한 건의 응답은 이렇게 생겼습니다.

{
  "result": "SUCCESS",
  "data": {
    "traceId": "2e31f2b8-...",
    "inputFacts": {
      "loyaltyTier": "VIP",
      "purchaseSubtotalUsd": 99.99
    },
    "mutatedFacts": {
      "purchaseSubtotalUsd": 79.99
    },
    "generatedVariables": {
      "purchaseSubtotalUsd__delta": -20.00
    },
    "executionTraces": [
      {
        "tenantId": "acme-corp",
        "policyGroupId": "01f2b274-...",
        "policyVersionId": "a6062090-...",
        "ruleId": "3b16ced1-...",
        "ruleName": "VIP 20% Discount",
        "executedAt": "2026-04-29T09:44:10Z",
        "matched": true,
        "matchExpression": "loyaltyTier == 'VIP'",
        "inputFacts": {
          "loyaltyTier": "VIP",
          "purchaseSubtotalUsd": 99.99
        },
        "generatedActions": [
          {
            "type": "MUTATE_FACT",
            "parameters": {
              "operand": 20,
              "method": "PERCENTAGE",
              "targetVar": "purchaseSubtotalUsd",
              "operator": "SUB",
              "rounding": { "mode": "HALF_UP", "scale": 2 }
            }
          }
        ]
      }
    ],
    "decisionTraces": [
      {
        "ruleId": "3b16ced1-...",
        "ruleName": "VIP 20% Discount",
        "policyGroupId": "01f2b274-...",
        "policyVersionId": "a6062090-...",
        "status": "SELECTED",
        "reasonCode": "FINAL_WINNER",
        "reasonDetail": null
      }
    ]
  }
}

이 실행 이력은 실행 로그의 보관 기간 동안 언제든 다시 꺼내 볼 수 있습니다. "왜 이런 일이 발생했나요"라는 질문의 답이 처음부터 기록으로 남아 있습니다. 뒤늦게 발굴할 일이 아닙니다.

직접 운영과 관리형 사이에서 고르는 다섯 가지 질문

정답은 팀 사정에 달려 있습니다. 다섯 가지를 스스로 물어보면 대체로 갈립니다.

1. JVM 플랫폼을 이미 운영 중인가요? 그렇다면 Drools 운영 부담은 기존 부담에 얹히는 정도입니다. 아니라면 이 시스템 하나 때문에 새 전문 영역을 계속 유지해야 합니다.

2. 규칙이 얼마나 자주 바뀌는 편인가요? 한 달에 한 번 이하라면 자체 호스팅의 배포 마찰은 견딜 만합니다. 일주일에 한 번 이상이면 그 배포 사이클이 그대로 쌓입니다.

3. 규칙을 코드베이스 밖에서 읽거나 검토할 일이 많은 편인가요? Drools는 규칙을 DRL 파일로 들고 있어서, 하나를 읽어 보려 해도 체크아웃하고 빌드해야 합니다. 관리형 엔진은 규칙 정의를 한 곳에 조회 가능한 형태로 둡니다. 규칙을 소유한 엔지니어가 애플리케이션 PR과 분리해서 규칙 변경 하나만 따로 검토할 수 있습니다.

4. On-premise나 air-gapped 배포가 요구 조건인가요? 요구 조건이라면 관리형 클라우드는 후보에서 빠집니다. 직접 돌리는 엔진 가운데서 고릅니다. 후보는 Drools, Camunda, 그리고 GoRules와 DecisionRules.io의 자체 호스팅판입니다. air-gapped 환경에서도 돌아가는지는 회사마다 확인하세요.

5. 지금의 테스트 전략을 어디까지 믿을 수 있나요? 자체 호스팅 Drools에서는 시뮬레이션 harness를 직접 만들어야 합니다. 관리형 엔진이라고 다 갖춘 것은 아닙니다. 2026년 9월 30일 기준으로 GoRules, DecisionRules.io, Nected 문서가 설명하는 것은 기대 출력을 적어 둔 테스트 케이스까지입니다. 운영에서 쌓인 실행 기록을 새 버전에 다시 돌려 보는 기능은 세 문서 어디에도 없습니다. 이 기능에 기대기 전에 있는지부터 확인하세요.

대략적인 휴리스틱으로 줄이면 이렇습니다.

  • 규제 준수 요구가 있고 JVM 플랫폼팀을 이미 가진 조직, 은행이나 보험사나 헬스케어 제공자라면 Drools나 Camunda입니다.
  • 규칙 변경이 잦은 B2B SaaS, 핀테크, 이커머스, 마켓플레이스라면 관리형 클라우드 룰 엔진입니다.
  • BPMN 워크플로우를 이미 쓰는 성숙한 조직이라면 Camunda가 자연스러운 확장입니다.
  • 규칙 레이어를 Stripe처럼 API-first에 추적 가능하고 운영 부담이 가벼운 형태로 만들고 싶은 신생 팀이라면 LexQ입니다.

LexQ가 적합하지 않은 경우

이 절을 쓰는 이유는 단순합니다. 제가 벤더에게 듣고 싶은 종류의 정직함이기 때문입니다.

Drools를 이미 잘 운영하고 있는 내부 JVM 플랫폼팀이 있다면 옮길 이유가 약합니다. 치를 비용은 이미 치렀고, 옮겨서 더 얻는 몫이 작습니다.

의사결정 데이터를 외부 API로 내보낼 수 없는 규제 환경이라면 후보에서 빼세요. 일부 금융 서비스와 특정 healthcare 워크로드가 여기 들어갑니다.

엄격한 on-premise나 air-gapped 운영이 필요하다면 지금은 답이 없습니다. LexQ는 현재 SaaS로만 제공합니다.

temporal reasoning, complex event processing, 표준 production rule 범위를 넘는 규칙 chaining이 필요하다면 Drools가 더 표현력 있습니다. 이런 워크로드는 Drools에 남겨 두는 편이 맞습니다.

그 외라면 이 맞바꿈은 할 만합니다.

마치며

Drools는 나쁜 도구가 아닙니다. 특정한 형태의 팀에 맞는 도구입니다. JVM 전문성이 깊고, 규칙이 자주 바뀌지 않고, on-premise나 규제 준수 제약이 있고, 배포 파이프라인을 별도 플랫폼처럼 유지할 의지가 있는 팀입니다.

그 형태가 아닌데도 Drools를 고르는 팀이 있습니다. 오픈소스 룰 엔진을 찾으면 가장 먼저 나오는 이름이기 때문입니다. 그런 팀은 빠진 조각을 만드느라 몇 달을 쓰고, 그 값을 두 번 치릅니다. 하나는 Drools 담당자가 된 플랫폼 엔지니어의 인건비이고, 다른 하나는 Maven 빌드를 통과해야 하는 규칙 변경마다 붙는 속도 손실입니다.

그게 README가 알려주지 않는 비용입니다. 그리고 의사결정 운영 플랫폼이 없애 주는 비용입니다.

→ 규칙 레이어를 JVM 운영 부담 없이 갖고 싶다면, LexQ를 무료로 사용해 보세요.

규칙 하나를 코드 밖으로 꺼내 보세요.

신용카드 없이 무료로 시작하세요. fact를 보내면 결과와 근거를 돌려받습니다.

무료로 시작하기