← Back to Blog

An Apache stack for a small business and a growing manufacturer

· 22 min read A workshop table with five brass machines in a row, a funnel, a small press, a lens, a stack of cards and a lantern, joined by one golden line, under a window showing glowing blocks on calm water.

Start with Hop for repeatable imports, Superset for shared reports and Answer for reusable staff answers. Add monitoring and a maintained web entrance. Iceberg earns consideration when historical tables must survive changing schemas and serve several engines; Flink earns consideration when acting within seconds or minutes changes the outcome. A small business probably should not run Flink, and SaaS wins both ordinary operating cost comparisons below.

That is a shortlist, not an instruction to install everything this week. Keep the checkout, accounting and production software that already does its job. Apache projects can connect those systems and expose useful information without becoming a replacement for the entire business.

The examples below are illustrations, not customers or installations. We read official documentation and reused the Apache series price research from October 29, 2026. We have not installed these stacks. Hardware sizes and hours are planning assumptions, with low and high cases. The downloadable kit carries the worksheet and component checklist.

Two businesses with money worth protecting

Our small example is a specialty apparel brand with its own packing operation, 20 people, within an assumed 10 to 30 person range. Its hypothetical annual revenue is $2 million to $5 million, our assumption, not a reported company result. Its owner wants to know which products remain profitable after returns and why staff keep asking the same fulfillment questions.

Our medium example is a specialty machinery manufacturer with 80 people, within an assumed 50 to 150 person range, and two production locations. Its hypothetical annual revenue is $15 million to $40 million, our assumption. It needs to connect work orders, inspection results and dispatch records, then decide whether a current shift needs attention.

The NYU Stern January 2026 US industry margins give these reference points:

Scroll to compare columns and rows when the table extends beyond the box.

Industry Firms in dataset Gross margin Net margin
Apparel 35 56.88% 3.85%
Machinery 105 37.47% 10.58%
Total market excluding financials Dataset aggregate 34.39% 8.56%

Apparel has high gross margin in this dataset, but its net margin is below the market comparison. Machinery is above that comparison on both measures. These are public company industry aggregates, not a survey of small businesses or a prediction for our examples. We do not multiply them by assumed revenue to invent a profit forecast. The distinction matters: a brand can have attractive product markups and little money left for another system.

Small: find yesterday's exceptions before packing starts

In the owner's words, our illustrative problem is: “We sell the item, ship it, refund some orders, then rebuild the margin sheet every Monday. New staff ask the same packing questions.” The first useful output is a reconciled report and a short set of approved answers.

Scroll to compare columns and rows when the table extends beyond the box.

Component Normal day's job Who runs it Initial scope
Apache Hop Combines order, refund, product cost and carrier exports; puts unmatched rows aside You, with a capable helper One repeatable scheduled import
Apache Superset Shows product contribution and unresolved shipping exceptions Your IT department or provider A few agreed reports over a small PostgreSQL reporting database
Apache Answer Holds approved packing, returns and product answers You, with a capable helper Staff questions with an assigned editor
Apache HTTP Server Provides the HTTPS entrance to the internal tools You, with a capable helper Restricted routes and maintained certificates
Apache HertzBeat Checks service health and warns the responsible helper You, with a capable helper Service checks plus a separate check of report freshness
Existing identity provider Handles the staff identity source and departure process Your IT department or provider Test each application's supported login and permissions

PostgreSQL is a non Apache dependency, included here because a curated stack should use a suitable database. Superset needs its own metadata database as well as the business reporting tables. Separate their credentials and recovery procedures even if a constrained pilot shares one host. The source accounting system remains authoritative.

The flow is deliberately ordinary:

  1. The existing shop, accounts and shipping systems export permitted fields. Keep card data outside these exports and check PCI DSS responsibilities before changing payment handling.
  2. Hop records the source date, checks identifiers and joins refunds to orders. A missing cost or unknown product becomes an exception, not a zero that flatters the margin.
  3. Validated rows enter reporting tables. Retain source exports and import identifiers so a repeated delivery cannot silently double sales.
  4. Superset reads those tables with restricted credentials. The owner sees the last complete import time beside the report.
  5. Staff use Answer for the explanation of a return rule. It links to the approved procedure; it does not contain customer order details.
  6. HTTP Server provides the entrance, existing identity controls access where supported, and HertzBeat warns the helper when a service or freshness check fails.

On Monday, the owner checks products with unexpected returns. The packing lead reviews unmatched shipments before parcels leave. Neither needs to know which container produced the screen. The helper does need to know where a failed import stopped and how to replay it safely.

There is no Kafka, Flink or Iceberg here. A dated export and ordinary reporting database can retain useful history without a lakehouse. Answer already searches its own questions; adding Solr merely to search those answers would create a second index to maintain. Remote access stays with the existing support arrangement.

The workflow article documents Hop's one core and 4 GB starting guidance. The dashboard article explains Superset's 8 GB community sizing reference and why its demonstration Compose file is not a production recipe. Our five separate pilot hosts cost four times $24 plus $48 monthly. Consolidation may reduce rental charges, but it needs a new memory budget and does not erase patching or recovery work.

Medium: connect production history to a decision this shift

The manufacturer's illustrative complaint is: “The inspection file says one thing, dispatch says another, and we discover a run of rejects after the next batch has started.” It also loses time finding approved specifications and occasionally needs authorized staff to reach existing office desktops from another location.

Keep the ERP and production controls. The OFBiz article explains when a broader replacement could be justified, but changing the ledger and building analytics in one project makes acceptance much harder. A dashboard does not replace manufacturing accounting.

Scroll to compare columns and rows when the table extends beyond the box.

Component Normal day's job Who runs it Decision
Hop and Superset Reconcile work orders, inspections and shipments; show exceptions by batch and site You for Hop; your IT provider for Superset Baseline
Answer and Solr Keep reviewed explanations in Answer; search approved specifications through a separate Solr application You for Answer; your IT provider and developer for Solr Baseline; distinct collections
HTTP Server and HertzBeat Provide the internal entrance and report failed services or stale data You with a capable helper Baseline, with provider oversight
Guacamole with its supported Tomcat runtime Gives authorized staff browser access to existing desktops Your IT department or provider Baseline only for the stated remote access need
Existing identity provider Keeps access tied to named staff and approved roles Your IT department or provider Retain; do not add Syncope automatically
Iceberg plus Spark and object storage Preserves analytical table history and runs reproducible batch calculations Your developer integrates Iceberg; your IT provider operates the platform Optional history extension
Kafka plus Flink Retains replayable events and evaluates a changing pattern while the shift continues Your IT department or provider, with a developer Optional event extension

The baseline budgets seven separate hosts: the small layout plus one $48 Solr host and one $24 Guacamole host. This is an itemized isolation budget, not a minimum deployment. Existing maintained edge or monitoring services may reduce it. Guacamole's application, connection service and authentication database share its limited pilot host. Tomcat is part of that supported deployment. Memory and concurrency need testing.

The flow has a clear boundary between baseline and extensions:

  1. Existing systems export work order, lot, inspection and shipment identifiers. Hop loads reconciled tables for the morning report.
  2. Superset reads the reporting database. Solr indexes approved specification text and revision metadata; Answer holds explanations written by people. Neither is the source of production truth.
  3. If history becomes a demonstrated problem, Spark writes validated historical tables in Iceberg format to object storage. A catalog records how engines locate the current table metadata.
  4. Spark produces batch summaries back into the reporting database. Superset reads that SQL database. It does not query a bucket merely because Iceberg files exist there.
  5. If a current shift needs faster decisions, a supported producer publishes timestamped events to Kafka. Flink groups them by machine or batch, updates state and creates an exception for a person to review.
  6. A compatible Iceberg sink can retain events for later analysis. Immediate alerts take their own delivery path; they do not wait for an hourly dashboard refresh. Guacamole supplies remote desktop access separately from this data flow.

This is advisory monitoring. It does not control machines, replace equipment interlocks or certify product safety. A delayed reading must not become permission to release a batch.

Use NiFi instead of Hop when continuously arriving files, visible queues and back pressure are the actual problem. Add Airflow only when dependent batch jobs and backfills outgrow the existing scheduler. Consider Doris when measured report queries need a different analytical database. Add SkyWalking when a custom application needs tracing. The workflow, analytics and monitoring articles explain those choices. None is included in the baseline bill.

Likewise, Syncope becomes a separate identity project when account provisioning across applications repeatedly fails. Existing supported identity should get the first chance. The database guide explains why a new distributed database is not an automatic upgrade for a small report store.

What Iceberg changes, and what it leaves to somebody else

An Iceberg table is an open table format: metadata describes which data files belong to a table and how to interpret them. It is not a server, database application or storage subscription. Files commonly live in object storage. Engines do the reading and writing; a catalog coordinates discovery and commits.

Its snapshots identify committed table states. Time travel lets a compatible engine read a retained earlier snapshot, which helps reproduce the data behind last month's quality report. Schema evolution supports changes such as adding or renaming columns using field identities. Hidden partitioning lets a reader filter normal columns while Iceberg handles the table's partition transforms. Changing the partition layout does not require every reporting user to learn new directory names.

These features help the manufacturer when inspection schemas change and several tools need consistent historical tables. They do not decide retention policy. Expiring a snapshot can remove the ability to query that point in time. A snapshot referencing deleted files is not an independent backup, and table history does not automatically reconstruct upstream corrections that were never imported.

Spark and Flink have Iceberg integrations for reading and writing. The project also lists engines including Trino, Hive and Impala, with different capabilities; verify the exact engine, connector and table format combination. DataFusion is useful for developer built file analysis, but a generic Parquet scan does not implement Iceberg snapshot semantics. Use an explicitly supported integration, rather than treating all Parquet files in a bucket as the current table.

Catalog choices include a REST catalog, JDBC catalog, Hive Metastore and AWS Glue. A catalog and object storage are separate responsibilities. Iceberg's Spark quick start demonstrates a matching runtime library and a local path based catalog. A simple evaluation can run on one machine with local files. That demonstration is not a universal minimum for resilient production.

For a modest business deployment, our judgment is one supported engine, one supported catalog, durable object storage and tested restoration before adding more engines. There is no universal Iceberg CPU or RAM requirement because the processing engine and workload determine those needs. Its release page lists 1.12.0, September 29, 2026. Its engine matrix lists Spark through 4.1, while the series records Spark 4.2.1 as the latest standalone release. Pin a supported engine and connector pair.

What Flink adds when the clock matters

Flink performs stateful processing: it remembers information between events. For the manufacturer, that might mean tracking recent inspection failures for each machine and noticing an unexpected pattern while someone can still investigate.

Event time uses the event's timestamp rather than only the time it arrives. Watermarks help the job decide how far event time has progressed; late events still need an explicit handling rule. A disconnected workstation that uploads an hour later is a business case to test, not an obscure edge case.

Checkpoints preserve processing state for recovery, but checkpointing is disabled by default. Enable it and test durable checkpoint storage. Flink's fault tolerance documentation explains exactly once state consistency, with replayable input and suitable source and sink behavior needed for an end to end guarantee. It does not mean a retried external email, payment or machine command happens once automatically. Give alerts stable identifiers and make downstream handling safe to repeat.

The smallest documented local arrangement has a JobManager and TaskManager, which can share a machine for evaluation. The standalone deployment guide describes the additional coordination and managers needed for high availability. Checkpoint storage must survive the failure it is meant to recover from. A single 8 GiB trial host is our sizing assumption, not a production floor or failover design.

The download page lists 2.3.0, June 25, 2026. Managed services may support a different version. Test the actual service runtime with the Kafka and Iceberg connectors before buying an implementation.

There is no employee count at which Flink becomes necessary. Our adoption test is a measurable loss from waiting, usable events with stable identifiers, a person who will act on alerts and an operator who can recover the job. If a fifteen minute query solves the problem, stop there. The small apparel business has no demonstrated need for Flink in this example.

Three years of operating costs

All prices are US dollars before tax, observed October 29, 2026. We use the series rate of $68.09 an hour, derived from the BLS administrator median wage of $47.66 divided by a 0.700 wages share of compensation. It estimates employee compensation. An outside IT provider bills more; get a quote.

DigitalOcean's selected monthly caps are $24 for 2 vCPU and 4 GiB, and $48 for 4 vCPU and 8 GiB. B2 retained backups cost max(0, GB minus 10) × $0.00695 monthly. Apply the free allowance once across each business, not once per server. Our backup assumptions are 100 to 500 GB small and 500 to 2,000 GB medium, including retained versions. Extra transfer, requests and disks require additional lines.

We retain the series operating allowances per separately maintained service: 4 to 12 setup hours and 1 to 3 monthly hours for a bounded single host; 24 to 60 and 6 to 16 for an IT platform. Superset and Guacamole receive the larger allowance, even on one host. Solr retains its series single host pilot allowance while remaining an IT responsibility.

That gives the small stack four simple services plus one IT service: 40 to 108 setup hours and 10 to 28 monthly hours. Medium adds Solr and Guacamole: 68 to 180 setup hours and 17 to 47 monthly hours. A provider may quote shared work more efficiently; we do not assume five services cost the same time as one.

The SaaS alternative buys the overlapping ordinary outputs:

Scroll to compare columns and rows when the table extends beyond the box.

Published item and billing basis Small assumption Medium assumption
Power BI Pro, $14/user/month paid yearly 5 to 10 users: $70 to $140/month 15 to 30 users: $210 to $420/month
Zapier Professional, starting at $19.99/month paid yearly One plan if connectors and tasks fit Same conditional starting plan for baseline exports
Discourse Pro, $100/month monthly billing One private knowledge community One community; at most five administrators or moderators
Datadog Infrastructure Pro, $18/host/month on demand Three existing operational hosts: $54/month Six existing operational hosts: $108/month
Algolia Grow, usage billed Not needed 100,000 searches and 50,000 records: $45/month
Splashtop Remote Access Pro, $8.25/user/month paid yearly Existing access retained 5 to 10 users: $41.25 to $82.50/month

Algolia's calculation is (100,000 minus 10,000 included requests) / 1,000 × $0.50. The assumed records fit its 100,000 included allowance. Search interface work and any private document authorization need separate validation. Datadog's infrastructure plan is not a promise of every synthetic or certificate check. Monitoring the new self hosted infrastructure is additional work covered by our HertzBeat allowance.

These are conditional subscription floors, not equivalent implementation quotes. Zapier must pass the connector and task test. Ordinary scheduled exports fit this comparison; Kafka and Flink do not. Both sides exclude custom connectors, report design, content editing, migration, training, incident response and ongoing business configuration. We assume zero separately charged SaaS infrastructure setup and administration. Setup period hosting is excluded; add it if servers are rented before the 36 operating months.

Checkout, accounting, identity, existing desktops and source system charges remain on both sides. For context, the series verified Shopify Basic at $39 monthly and QuickBooks Simple Start at $38 regular monthly. We deduct neither from an Apache bill, and neither plan is assumed sufficient for the manufacturer.

Scroll to compare columns and rows when the table extends beyond the box.

Baseline operating budget Small low Small high Medium low Medium high
Setup $2,724 $7,354 $4,630 $12,256
Monthly $826 $2,054 $1,377 $3,430
Self hosted, 36 months $32,443 $81,295 $54,200 $135,738
SaaS monthly floor $244 $314 $524 $775
SaaS, 36 months $8,784 $11,304 $18,873 $27,918
Additional self hosted cost $23,659 $69,991 $35,327 $107,821
Break even against SaaS floor Never Never Never Never

Setup = hours × $68.09. Monthly = hosts + backups + admin hours × $68.09. Total = setup + 36 × monthly. Savings = alternative total minus self hosted total. Break even divides additional setup by positive monthly savings and rounds up; with no monthly saving here it is never. Displayed totals round only after calculation.

For example, small low is 40 × $68.09 + 36 × ($144 + 90 × $0.00695 + 10 × $68.09). Medium low is 68 × $68.09 + 36 × ($216 + 490 × $0.00695 + 17 × $68.09). These are operating budgets for bounded workloads with outage windows, not resilient production quotes.

If an AI agent does the typing

AI can draft configuration, inspect logs and help prepare update instructions. A competent person still approves access, checks results and proves restoration. Our AI hours are assumptions from the series setup research, not measured Apache installation savings.

For simple services, we use 50% to 80% of manual setup hours and 75% to 100% of monthly hours. For IT services, use 65% to 90% and 80% to 100%. The endpoints produce 23.6 to 92.4 setup hours and 7.8 to 28 monthly hours for small; 41.2 to 156 setup hours and 13.35 to 47 monthly hours for medium. Prompting, review, testing and correction are inside those hours.

The Claude subscription view uses one Max 5x at $100/month. The ChatGPT view uses one Pro 100 at $100/month. Charge one separate setup month and all 36 operating months: $3,700, once per stack. We allocate the full subscription because this example assumes no other use. Equal prices do not imply equal allowances or performance; neither vendor guarantees the whole workload fits. Additional months or usage add cost.

The API view uses Claude Opus 5.5 at $4 input, $20 output, $0.20 cached read and $5 short cache write, or GPT-6 Astra at $10, $50, $1 and $12.50, per million tokens at standard rates. No credits, batch discounts or paid tools are deducted. Cache categories replace ordinary input billing for those tokens; they are not added to it.

Our cumulative small API budgets are 1.8 to 9 million input and 0.18 to 0.9 million output for setup; monthly, 0.9 to 4 million input and 0.09 to 0.4 million output. Medium uses 3 to 15 million and 0.3 to 1.5 million for setup; monthly, 1.5 to 6.5 million and 0.15 to 0.65 million. These sum the per service budgets, including retries, across many calls. They are not single prompts.

Low assumes input splits into 30% ordinary, 10% short writes and 60% cache reads. High assumes all ordinary input. Keep individual requests within the applicable context price band. The kit shows token charges and the full worksheet.

Scroll to compare columns and rows when the table extends beyond the box.

36 month total Small low Small high Medium low Medium high
Manual reference $32,443 $81,295 $54,200 $135,738
Claude subscription $29,633 $83,933 $47,128 $137,804
ChatGPT subscription $29,633 $83,933 $47,128 $137,804
Claude API $26,064 $81,151 $43,646 $135,598
OpenAI API $26,270 $82,528 $43,989 $137,839

Low API assumptions reduce the ownership cost substantially, but none changes the SaaS decision. In the high case, unchanged monthly labor means tool charges consume the setup saving. A cheaper typing bill does not make seven separately maintained services the cheapest way to publish ordinary reports.

Use supported coding tools with authorized server access. A browser assistant does not itself supply a server or a recovery plan. Subscription access and metered API usage are different budgets; do not treat a subscription as unlimited tokens for unattended integrations. Validate actual human hours during the pilot before carrying these assumed reductions into a purchasing decision.

Price history and streaming separately

The optional manufacturer extension is outside both baseline totals. Amazon Managed Service for Apache Flink publishes $0.11 per KPU hour in its US East example. One KPU supplies 1 vCPU and 4 GB memory. Add one orchestration KPU per streaming application and 50 GB running storage per processing KPU at $0.10/GB/month.

At our assumed 730 hours monthly, one processing KPU costs (1 + 1) × 730 × $0.11 + $5 = $165.60/month, or $5,962 over 36 months. Two processing KPUs cost $250.90/month, or $9,032. Input streams, durable backups, transfer and application work are additional. Managed compute still needs a developer and an operator.

S3 Tables supplies managed Iceberg table storage and maintenance. Its Oregon example totals $28.54/month, or $1,027 over 36 unchanged months: $27.14 storage, $0.15 PUT requests, $0.20 GET requests, $0.26 object monitoring and $0.79 compaction. That example retains 1,024 GB, adds 1,000 five MB data files and three metadata files daily, makes 500,000 monthly GET requests and assumes 100 MB final objects. It is a usage example, not a fixed plan.

The service has an Iceberg REST endpoint. An Athena route uses the documented AWS analytics integration with Glue Data Catalog; catalog charges are separate. Athena at $5/TB scanned means $5 to $25 monthly for our assumed 1 to 5 TB of scans. EMR Serverless prices the series Spark example at $0.052624/vCPU hour and $0.0057785/GB hour: 20 to 80 hours × (4 × $0.052624 + 8 × $0.0057785) = $5.13 to $20.54/month, including the driver within those aggregate resources.

Do not add these regional examples into a deployment quote. Choose one region, measure traffic and price input retention, catalog usage, backups, table maintenance, compatible compute and provider labor. The kit supplies those missing worksheet lines. Spark batch and Athena are alternative query routes where either suffices; buying both requires a reason.

The Flink page's example arithmetic uses $0.10 storage, but a later sentence shows $0.121. Our figures reproduce the published example; confirm the selected region's current rate before purchase. Neither these service charges nor the baseline includes writing the event rules. The sensible first commitment is a priced, bounded trial with a separate implementation quote.

Roll out only as far as the result earns

Scroll to compare columns and rows when the table extends beyond the box.

Business and phase Work and success measure, our acceptance targets Stop point
Small 1 Reconcile two weeks of source exports with Hop or the existing tools; explain every difference from source totals Stop if the current export and spreadsheet already answer the question
Small 2 Trial one Superset dashboard and ten approved Answer entries; managers can trace an exception and staff can find the current instruction Stop if nobody uses either output without prompting
Small 3 Assign monitoring and access owners; restore the data and configuration to a fresh environment within an agreed workday Keep this stack bounded; no Flink or Iceberg without a new demonstrated requirement
Medium 1 Join work orders, inspections and dispatch for one production line; reconcile counts over two weeks Stop expansion if identifiers or source ownership remain unreliable
Medium 2 Add approved document search and needed remote access; test revision removal, a revoked user and recovery Stop if the existing document system or remote service already passes those tests
Medium 3 Separately trial Iceberg history, then Flink only if needed; reproduce a retained report and deliver a test exception within an assumed two minute target, including restart and late data tests Stop streaming if a fifteen minute batch meets the operational need or alerts have no assigned responder

Measure the result before claiming savings. Count time actually released, errors corrected and work the team can now complete. A faster dashboard has no demonstrated financial value merely because it feels better. This is the spending discipline behind The $97 Launch: buy a specific useful result and keep the first commitment reversible.

The person responsible for Tuesday's failure

The small stack needs one capable helper and a named Superset provider. The manufacturer needs a provider who understands databases, search and secure remote access, plus a developer for its connectors and event rules. These are responsibilities, not necessarily full time hires. The provider quote should name the backup person as well as the usual contact.

Back up every stateful piece: reporting and Superset metadata databases, Hop definitions and source checkpoints, Answer content and uploads, HTTP configuration, HertzBeat configuration and history, Solr configuration and recoverable source content, and Guacamole's authentication database and protected configuration. For the extension, include Kafka retention and producer recovery, Flink checkpoints and savepoints, and Iceberg metadata, catalog state and referenced files. Test a consistent recovery set rather than restoring unrelated dates independently.

Each single host is a failure point. So are a shared database, a lone catalog, the internet connection, the identity provider and the only person who knows the credentials. Put monitoring outside the failure it must report, and maintain an external way to notice that the monitor itself stopped. Replicas and snapshots address different failures from an independent backup.

Follow ASF security advisories and each project's security channel. The security and remote access guide and monitoring guide explain the duties. Track the OS, Java, Python, container images and connectors as well as the Apache release. A license fee of zero does not cover emergency patching.

Apache License 2.0 permits commercial use and modification subject to its terms, including distribution notices. It provides no warranty or general trademark permission. Review the license and dependency terms for your actual distribution; this is not legal advice.

Download the kit

Download the Apache stack kit for both stack tables, data flows, version and backup checklist, phased acceptance tests, cost worksheets and questions to put into an IT provider's quote.

Related reading

Fact-check notes and sources

The series observations below are dated October 29, 2026, UTC. Prices, versions and observed documentation can change. Dates identify research, not installations. Low and high hours, revenue, seats, traffic and acceptance targets are our assumptions.

  1. NYU Stern industry margins, 23:40 direct and 23:41 browser. Page identifies “Data used is as of January 2026.” Gross and net columns are distinct.
  2. BLS wage, 21:12; compensation share, 21:17; DigitalOcean and B2, 21:10. Shared series observations.
  3. Power BI, 21:39; Zapier, 21:38; Discourse, 21:37; Datadog, 21:38; Algolia, 21:37; Splashtop, 21:48. Reused series prices and billing terms.
  4. Shopify, 21:39; QuickBooks, browser observation approximately 21:45 to 21:55, exact minute unrecorded. Context prices, excluded from both totals.
  5. Claude Max, 23:31; ChatGPT pricing and Pro tiers, supplied browser observation approximately 23:27, exact minute unrecorded.
  6. Claude API prices, 23:31; OpenAI API prices, rechecked 23:40; Codex CLI, 23:32. Prices do not validate assumed time savings or token budgets.
  7. Hop installation and sizing, 21:39; Superset FAQ and deployment warning, 21:38. See linked group articles for the other baseline components and their security sources.
  8. Iceberg overview, evolution, maintenance, catalog configuration and AWS integration, 23:40.
  9. Iceberg releases, Spark starter, Flink integration and Flink writes, 23:40; engine compatibility, 23:41. Iceberg 1.12 lists Spark through 4.1; do not assume Spark 4.2.1 compatibility.
  10. Flink downloads, state, event time, checkpoints, first steps and high availability, 23:40.
  11. Managed Flink, S3 Tables pricing, Athena and EMR, 23:40. Flink storage discrepancy disclosed above; regional examples are not one system quote.
  12. S3 Tables access, Glue integration and Glue pricing, 23:42.
  13. ASF security and Apache License 2.0, series observation 21:40; PCI DSS, series observation October 29. Requirements depend on the actual data and deployment.

Apache, the Apache feather logo and the Apache project names are trademarks of The Apache Software Foundation. This site is not affiliated with or endorsed by the ASF. Other product names are used for identification only.

← Back to Blog

Accessibility Options

Text Size
High Contrast
Reduce Motion
Reading Guide
Link Highlighting
Accessibility Statement

J.A. Watte is committed to ensuring digital accessibility for people with disabilities. This site conforms to WCAG 2.1 and 2.2 Level AA guidelines.

Measures Taken

  • Semantic HTML with proper heading hierarchy
  • ARIA labels and roles for interactive components
  • Color contrast ratios meeting WCAG AA (4.5:1)
  • Full keyboard navigation support
  • Skip navigation link
  • Visible focus indicators (3:1 contrast)
  • 44px minimum touch/click targets
  • Dark/light theme with system preference detection
  • Responsive design for all devices
  • Reduced motion support (CSS + toggle)
  • Text size customization (14px–20px)
  • Print stylesheet

Feedback

Contact: jwatte.com/contact

Full Accessibility Statement • Privacy Policy

Last updated: April 2026