Architecture Overview
Description
Altcraft is a scalable marketing automation platform built on a microservice architecture. The microservice approach ensures fault tolerance (a failure of one service does not affect the entire system) and horizontal scalability. All services are written in Go and designed to run in a Linux environment. Some parts of the system can be distributed across network zones (e.g., Internet, DMZ, Data Storage) for increased security. A common practice is isolating databases and MTA (akmtad) in separate segments.
The system requires the following components:
- MongoDB — the primary database for storing accounts, users, and settings;
- ClickHouse — stores events, activity history, and analytics;
- RabbitMQ — message broker for communication between services;
- SSDB and Kvrocks — high-performance key-value stores for auxiliary data;
- PostgreSQL (optional) — used in the “Market” module to store products and orders;
- other standard components available in OS repositories.
User interaction with the system is carried out via a web interface, while traffic routing and SSL termination are handled by the Nginx web server, supplied as a pre-built package with Altcraft. Three Nginx instances run simultaneously, each serving its own traffic type.
A more detailed description of all components is available in a separate article (see System Components).
Main Tasks of the Platform
User and API Call Handling
Handled by the webcontrol, webadmin, and api services. Cookies and JWT are used for identification and session storage. Authorization depends on the control panel:
webadmin— for administrators (account creation, user and settings management);webcontrol— for users (business logic management).
Marketing Campaign Logic Processes
Include tasks such as message preparation, customer data processing, and performing requests to external sources or APIs. An example of such a service is procworkflow.
Message Preparation
Implemented in the proctrigger and campaign services:
proctriggergenerates trigger (usually transactional) messages;campaignhandles mass campaigns and runs on schedule.
Message Delivery
Messages are pulled from the broker, prepared for sending in a local queue, and delivered according to configured rules and channels. Email delivery is handled by the akmtad service, which can operate as a separate node. Multiple akmtad instances provide scalability and help bypass blocks. SSH is used to speed up deployment.
Customer Action Tracking
Implemented using pixels, HTTP redirects, and cookies. Access control and scalability are managed via the procrpc RPC service. For handling website and message traffic, several Nginx instances are used: nginx-cookiesaver and nginx-trk.
Event Processing and Analytics
Data collection, aggregation, and transmission to reports and external services. Nearly all Altcraft services participate in these processes.
Periodic Tasks
Customer data processing, import, and export are performed on schedule by dedicated Altcraft services.
Utility Applications
Examples:
akd— starts and stops services;altool— performs migrations and manages certain entities created in Altcraft;health— evaluates service health.
Architecture Diagram
The diagram highlights the main zones where parts of the platform are located:
- Internet — public segment with limited protection, usually hosting services that accept incoming messages from external sources;
- DMZ — demilitarized zone for receiving HTTP and SMTP traffic. Services located in the DMZ are isolated and have no direct access to databases;
- Data Processing — data processing zone where the core business logic of the platform resides. This is where calculations, aggregation, and data transformation occur;
- Data Storage — secure segment for storing system and customer data (including external sources).

In the diagram, platform components are grouped by functional purpose. Some services run continuously (daemons), others run periodically or on demand (Jobs and Internal Tasks).
-
Campaign & Logic — services for processing marketing campaigns:
proctrigger— trigger campaigns;procworkflow— workflow task processing.
-
Event Processing — services for handling events: collection, aggregation, and routing (e.g., tracking clicks).
-
Integration & Delivery — services for message delivery and integration with external systems:
procpiper,procintegras— deliver all message types and integrate with cloud services.
-
Web & Tracking — services for processing HTTP traffic and serving content:
trkaction,trkread, and others — process tracking requests and serve static content.
-
API & Interface — user and admin interface services:
webcontrol— user web interface;webadmin— admin interface;api— REST/HTTP API for external applications.
-
AKMTA — email delivery; managed via node and the admin web interface.
-
ProcTask — handler for periodic and one-off tasks (
proctask), accepts gRPC requests. -
ProcRPC — gRPC service for tracking, providing access to database data.
-
Utility Services — auxiliary system processes (
akd,procnotify,node). -
Internal Tasks — periodic and one-off tasks executed inside services (
proctask). -
Jobs — tasks requiring a separate process launch, such as mailings.
-
Proxy — proxy servers for traffic routing and SSL termination. They can also run behind the customer’s external proxy.
All components support horizontal scaling. However, some services (e.g., procworkflow and proctask) operate in master-worker mode and must be configured properly.