Fóir가 존재하는 이유

다른 사람들을 위해 8년간 소프트웨어를 만들면서, 거의 모든 프로젝트에서 같은 빈틈을 보았습니다. 콘텐츠 관리 시스템으로 대부분은 해결됩니다. 해결되지 않는 나머지 부분에 예산이 들어갑니다.

클라이언트 작업에서 시작했습니다

Fóir는 클라이언트를 위해 소프트웨어를 만드는 스튜디오에서 나왔습니다. 제품은 프로젝트마다 달랐지만, 그 아래에는 늘 같은 부품이 필요했습니다. 개발자 없이 편집자가 바꿀 수 있는 콘텐츠, 특정 사용자에게 속하는 데이터, 로그인, 파일 저장소, 예약 작업, 그리고 누가 무엇을 볼 수 있는지에 대한 규칙입니다.

이 부품들을 프로젝트마다 만들었고, 그때마다 서로 어떻게 맞물려야 하는지 배웠습니다. 프로젝트가 충분히 쌓이자 패턴이 더는 바뀌지 않았고, 클라이언트마다 다시 만드는 일은 점점 의미가 없어졌습니다.

마지막 10퍼센트

기성 CMS는 요구 사항을 거의 충족합니다. 그다음에 CMS가 애초에 하지 않을 부분이 나옵니다. 로그인 영역, 고객마다 다른 콘텐츠, 다른 시스템에 손을 뻗는 워크플로입니다.

그 시점에는 앞으로 나아갈 길이 세 가지이고 각각 비용이 듭니다. 시스템 두 개를 운영하며 둘 사이의 연동을 작성하거나, 백엔드를 만들고 서드파티 CMS를 옆에 붙이거나, 백엔드를 만들고 팀이 이미 익숙한 편집 도구까지 다시 만드는 것입니다. 세 가지 모두 한 번 이상 견적을 냈지만, 누구도 사고 싶어 한 것은 없었습니다.

에이전트는 매번 다시 만듭니다

개발이 저렴해졌다면 그 마지막 부분도 감당할 만해졌어야 합니다. 대신 그 일이 더 자주 생겼습니다. 애플리케이션을 만들도록 요청받은 에이전트는 프로젝트마다 부족한 부품, 즉 로그인, 데이터베이스, 파일 저장소, 권한, 작업 큐를 똑같이 조립합니다. 대부분 보안에 중요한 부품이고, 아무도 처음부터 끝까지 읽지 않은 코드베이스에서 에이전트가 매번 각 부품을 올바르게 연결했다고 믿어야 합니다.

Fóir에서는 이 부품들이 이미 연결된 채로 제공되며, 운영도 저희가 합니다. 에이전트는 제품에 고유한 부분을 작성하고, 액세스 규칙을 빠뜨릴 수 없는 백엔드 위에서 일합니다.

그 코드의 버그는 부재입니다

조립된 백엔드의 실패는 조용합니다. 아무도 실행하지 않은 경로의 검사, 조건절이 빠진 쿼리, 키를 가진 사람보다 더 넓게 닿는 키입니다.

없는 것에 대해서는 검토만으로 확신에 이를 수 없습니다. 효과가 있는 것은 검사를 빠뜨릴 수 없는 시스템입니다. Fóir에서는 액세스 규칙이 데이터베이스 자체의 행 수준 보안으로 컴파일되므로, 검사를 잊은 쿼리도 호출자가 볼 수 있는 것만 돌려받고, 새 테이블은 누군가 보호 방식을 결정할 때까지 저희 테스트를 통과하지 못합니다. 컴파일을 수행하는 엔진은 Demesne이며, 오픈 소스입니다.

저희도 그 위에서 만듭니다

Fóir는 저희 작업의 출발점이 되는 기반입니다. 이 사이트도 Fóir 위에서 실행되며, 새 클라이언트 프로젝트도 여기서 출시됩니다. 빌드마다 다시 내리던 결정, 예를 들어 콘텐츠를 어떻게 모델링하는지, 사용자의 데이터를 어떻게 그 사용자의 것으로 유지하는지는 한 번 정하고 계속 유지합니다.

백엔드는 작성하는 것만큼 운영도 해야 하므로 Fóir는 관리형 서비스입니다. 누가 데이터를 볼 수 있는지 결정하는 부분은 누구나 읽을 수 있게 공개되어 있습니다.

그래서 계속 견적을 냈던 것을 만들었습니다

모든 프로젝트가 같은 기반을 다시 만드는 비용을 치렀습니다.

Fóir가 바로 그 기반이며, 저희가 운영합니다. 구조화된 콘텐츠와 애플리케이션 데이터가 하나의 런타임에 있고, 호스팅 로그인, 미디어, 개인화, 자동화, 생성된 API가 이미 서로 연결되어 있습니다. 여러분은 자신의 비즈니스 로직부터 시작합니다.

대신하는 것들

구독과 구축 프로젝트를 한곳에서, 하나의 청구서로 대체합니다.

헤드리스 CMS

편집 인터페이스, 스키마, 초안, 버전 이력.

인증 공급자

자체 사용자를 위한 로그인을 사용자의 도메인에서 제공하며, 함께 쓰는 역할도 포함합니다.

스토리지와 CDN

업로드, 이미지 변환, 비디오 스트리밍, 그리고 그 앞단의 전송.

검색 서비스

레코드 전반의 전문 검색, 그리고 의미 기반 검색을 위한 벡터.

작업 실행기

스케줄, 백그라운드 오퍼레이션, 재시도, 그리고 실패한 건이 쌓이는 곳.

메시징 공급자

트랜잭션 이메일, 인앱 알림, 푸시를 제공하며, 환경설정은 고객별로 보관합니다.

통합 계층

이 여섯 가지를 묶어 두는 코드와 그 사이에서 생기는 불일치.

패치를 담당하는 사람들

최신 상태로 유지할 서버도, 업그레이드를 위한 주말 작업도 없습니다.

버틸 수 있는지 확인하기

모든 기능과, 대신 어떤 도구를 쓰겠는지 분명히 밝힌 비교를 담았습니다.