위젯은 다 연결해서 화면이 잘 움직이는데, 왜 이렇게 정신없어 보이지 — 그리고 왜 이 버튼 하나는 원하는 대로 안 바뀌지
레고로 집을 짓는 것과 비슷하다
Workshop으로 화면을 만드는 과정은 레고로 집을 짓는 것과 닮았다. 정해진 브릭(위젯)을 스터드(변수)로 딱딱 끼워 맞추면, 코드 한 줄 없이도 꽤 그럴듯한 결과물이 빠르게 나온다. 위젯 배치와 변수 바인딩 자체는 이미 다른 글에서 다뤘으니, 여기서는 그 다음 단계 — 레고로 지은 집이 왜 정신없어 보이는지, 그리고 세트에 없는 모양의 브릭이 필요할 때 어떻게 되는지를 다룬다.
정돈된 레고 집을 짓는 조립 설명서 — 공식 레이아웃 원칙
Palantir 공식 문서는 Workshop 화면을 설계할 때 지켜야 할 구체적인 수치 기준을 제시한다.[1]
- 한 화면당 주요 작업은 5개 이하로. 레고 세트 하나에 너무 많은 기능 브릭을 욱여넣으면 사용자가 뭘 눌러야 할지 헷갈린다.
- 한 뷰에 10개 이상의 컴포넌트를 넣지 않는다. 브릭이 너무 빽빽하면 완성된 모양이 안 보인다.
- 여백 비율은 30~40%를 유지한다. 레고 세트 사진에도 배경 여백이 있어야 조립 결과물이 눈에 들어온다.
- 레이아웃은 그리드(좌→우), 컬럼(위→아래), 혼합형(좌측 필터 고정+우측 콘텐츠) 중에서 고른다.
- 타이포그래피는 기본값(Source Sans Pro)이나 설치된 시스템 폰트를 쓴다. 커스텀 폰트는 설치돼 있지 않으면 기본값으로 조용히 되돌아간다.
- 그림자는 위계를 나타내는 용도로만. 드롭 섀도우는 중요한 섹션, 내부 섀도우는 낮은 중요도 — 이 규칙을 화면 전체에 남발하면 오히려 위계가 사라진다.
검증 방법도 나와 있다 — 인터페이스를 눈을 살짝 찡그리고 보라는 것이다.[1] 흐릿하게 봤을 때도 중요한 요소가 먼저 눈에 들어오면 위계가 제대로 잡힌 것이고, 다 비슷하게 보이면 5개 이하 원칙부터 다시 점검해야 한다.
세트에 없는 브릭이 필요할 때 — 커스터마이징의 벽
레고의 장점은 정해진 브릭을 빠르게 조립할 수 있다는 것이고, 단점은 정확히 그 반대다 — 세트에 없는 모양은 만들 수 없다. Workshop도 똑같다. 실제 리뷰어들의 경험이 이 지점을 정확히 짚는다.
Palantir Foundry 개발자로 일하는 한 리뷰어는 이렇게 남겼다.
“The Workshop application could be improved because it is not very customizable”[2]
더 구체적인 사례도 있다. 소매업체의 소프트웨어 엔지니어는 이렇게 회고했다.
“the Workshop application has some widgets inside that we wanted to modify, but when we reached out to Palantir, they informed us that it was a design decision”[2]
즉 특정 위젯의 동작 방식은 버그가 아니라 팔란티어가 의도적으로 그렇게 설계한 것이라는 뜻이다. 이런 경계에 부딪히면 남은 선택지는 둘 중 하나다 — 그 제약 안에서 우회하거나, Slate(Palantir의 코드 기반 애플리케이션 빌더)로 넘어가 직접 커스텀 UI를 짜는 것.
실제로 막히는 지점 하나 — URL을 하이퍼링크로 못 만드는 문제
Palantir Developer Community에는 이 “세트에 없는 브릭”을 실제로 마주친 사례가 남아있다. Property List 위젯에서 로컬 변수를 조합해 URL 문자열을 만들었는데, 이걸 클릭 가능한 링크로 표시할 방법이 없다는 질문이었다.
담당자 Phil-M의 답변은 이 한계를 그대로 인정한다.
“local variables can not be part of vanilla URL” … “there is no way to display/value format the resulting string as hyperlink”[3]
대신 두 가지 우회법을 제시했다.[3]
- 함수 기반 컬럼으로 로컬 변수를 입력받아 문자열을 연결(concat)한 뒤, 사용자가 우클릭으로 값을 복사하게 한다.
- looped layout으로 객체를 하나씩 개별 표시하고, Markdown 위젯에서 그 URL을 리치포맷으로 렌더링한다.
정확히 레고에 비유하자면, 원하는 모양의 브릭이 세트에 없을 때 비슷한 브릭 두세 개를 조합해서 억지로 그 모양을 흉내 내는 것과 같다. 안 되는 건 아니지만, 애초에 그런 브릭이 있었다면 필요 없었을 단계다.
그래서 Retool·Appsmith 같은 툴과는 뭐가 다른가
Workshop을 Retool이나 Appsmith 같은 범용 노코드 UI 툴과 비교하는 논의를 찾아봤지만, 셋을 직접 비교하는 자료는 확인하지 못했다. 대신 각 툴의 공식 스코프를 근거로 구조적 차이만 짚어둔다 — Workshop은 온톨로지(Object Type·Link Type)에 네이티브로 묶여 있어 Foundry 밖의 임의 데이터베이스에 직접 연결할 수 없는 반면, Retool·Appsmith는 PostgreSQL·REST·GraphQL 등 범용 데이터 소스에 직접 붙는 구조다. 이건 우열의 문제가 아니라, Workshop이 애초에 “Foundry 온톨로지 위의 운영 화면”이라는 좁은 목적을 위해 설계됐다는 뜻이다.
실무 판단 기준
- 화면이 안 움직인다면 → 바인딩 문제. 기존 글에서 다룬 Object Set 변수·Active Object 변수 연결부터 확인한다.
- 화면은 동작하는데 정신없어 보인다면 → 레이아웃 원칙 위반. 컴포넌트 개수(10개 이하)와 여백(30~40%)부터 점검한다.
- 원하는 대로 커스터마이징이 안 된다면 → 의도된 제약인지 먼저 확인한다. 버그 리포트를 넣기 전에 공식 문서나 커뮤니티에서 “design decision”인지부터 검색해보면 시간을 아낄 수 있다.
- 꼭 필요한 커스텀 동작이라면 → Slate 전환을 고려한다. Workshop의 프리셋 위젯 밖의 동작이 필요하면, 우회를 반복하는 것보다 코드 기반 빌더로 넘어가는 편이 결국 더 빠를 때가 많다.
FAQ
Q. Workshop에서 커스텀 CSS를 쓸 수 있나요? 프리셋 위젯의 스타일(그림자, 패딩, 색상 강조 등)은 설정값 안에서 조정 가능하지만, 임의의 CSS를 주입하는 방식은 공식 워크플로우가 아닙니다. 그 수준의 커스터마이징이 필요하면 Slate를 검토하는 게 맞습니다.
Q. 위젯이 “design decision”이라고 안내받으면 방법이 없나요? 공식적으로 지원되지 않는다는 뜻이지, 우회가 항상 불가능하다는 뜻은 아닙니다. 본문의 URL 하이퍼링크 사례처럼 함수 컬럼이나 다른 위젯 조합으로 비슷한 효과를 낼 수 있는 경우가 많습니다.
Q. 레이아웃 원칙(5개 이하 작업, 10개 이하 컴포넌트)은 꼭 지켜야 하나요? 공식 가이드라인이지 강제 규칙은 아닙니다. 다만 이 기준을 넘기기 시작하면 “눈을 찡그려 보기” 테스트에서 바로 티가 나니, 화면이 복잡하다는 피드백을 받으면 이 수치부터 세어보는 게 진단이 빠릅니다.
참고자료
[1] Palantir, Workshop • Application design best practices, Foundry 공식 문서.
[2] PeerSpot, What needs improvement with Palantir Foundry? — 실사용자 리뷰(Palantir Foundry Developer, Software Engineer III).
[3] Palantir Developer Community, Help with Dynamic Variables and URLs in Property List Widget in Palantir Workshop — 실사용자 질문 + Palantir 담당자(Phil-M) 답변.
[4] Palantir, Workshop • Widgets, Foundry 공식 문서.
