<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>vasil - Appsemble</title>
	<atom:link href="https://appsemble.com/en/author/vasil/feed/" rel="self" type="application/rss+xml" />
	<link>https://appsemble.com</link>
	<description>Open source low-code platform</description>
	<lastBuildDate>Wed, 04 Jun 2025 19:05:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://appsemble.com/wp-content/uploads/2019/03/cropped-Appsemble-logo-512-1-32x32.png</url>
	<title>vasil - Appsemble</title>
	<link>https://appsemble.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Appsemble Architecture Changes In 2025</title>
		<link>https://appsemble.com/en/appsemble-architecture-changes-in-2025/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=appsemble-architecture-changes-in-2025</link>
		
		<dc:creator><![CDATA[vasil]]></dc:creator>
		<pubDate>Tue, 17 Dec 2024 12:36:18 +0000</pubDate>
				<category><![CDATA[Geen categorie]]></category>
		<guid isPermaLink="false">https://appsemble.com/?p=2476</guid>

					<description><![CDATA[<p>What we have now Appsemble in its current form is what you would call a monolith. We have one big server, which connects to a single database and exposes an Application Programming Interface (API). This self-contained unit can be deployed as one whole. We have the Appsemble Studio, which serves as a central point for &#8230;</p>
<p>The post <a href="https://appsemble.com/en/appsemble-architecture-changes-in-2025/">Appsemble Architecture Changes In 2025</a> first appeared on <a href="https://appsemble.com">Appsemble</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">What we have now</h2>



<p>Appsemble in its current form is what you would call a monolith. We have one big server, which connects to a single database and exposes an Application Programming Interface (API). This self-contained unit can be deployed as one whole.</p>



<p>We have the <strong>Appsemble Studio</strong>, which serves as a central point for app development and management. Apps are served on their own domain, but they are still served from the <strong>Appsemble Server</strong> and use <em>it</em> to get their data.</p>



<p>Once an <strong>Appsemble App</strong> is published, its structure is stored in the database as an app definition, which is parsed on the client to fetch the needed <strong>Appsemble Blocks</strong> from the Appsemble Server and display them on the screen when a user visits an app.</p>



<h3 class="wp-block-heading">App Data</h3>



<p>App data comes in two forms &#8211; <strong>Resources</strong> (structured app data) and <strong>Assets</strong> (files).</p>



<p>Assets are stored as binary data directly in the database, using <a href="https://www.postgresql.org/docs/current/datatype-binary.html">PostgreSQL&#8217;s BLOB</a> column type. When an asset is fetched from within an app, it is being loaded in memory on the Appsemble Server and then returned to the client at once, not utilizing any streaming techniques. This puts heavy load on the main Appsemble Server.</p>



<p>Resources are currently stored as <a href="https://en.wikipedia.org/wiki/JSON">JSON</a> objects in the database, using <a href="https://www.postgresql.org/docs/current/datatype-json.html">PostgreSQL&#8217;s JSONB</a> column type. The structure of resources and the connections between them is defined in the app definition. We are not utilizing the relational capabilities of our database to enforce field type constraints and foreign key constraints &#8211; that is all done programmatically on the Appsemble Server. This also makes it difficult and inefficient to query paginated resource data and search it at the same time.</p>



<p>Data for all published Appsemble Apps is stored in the same main database, meaning that there is no isolation of data per app.</p>



<h2 class="wp-block-heading">How we plan to improve things</h2>



<p>While the current setup works and has been sufficient for a while, there are a lot of potential improvements that can be made. In 2025 we are planning to improve the architecture of the Appsemble platform as a whole, aiming at isolation of data and performance improvements. This is a big topic that should be tackled incrementally. The steps towards that, as a general plan, are as follows:</p>



<h3 class="wp-block-heading">Better Asset Storage</h3>



<p>We are planning to introduce support for S3 file storage so we can utilize streaming capabilities and image and video compression/decompression, reducing the load on the main Appsemble Server in the process <a href="https://gitlab.com/appsemble/appsemble/-/issues/1722">https://gitlab.com/appsemble/appsemble/-/issues/1722</a> [upd Feb 2025: done]</p>



<h3 class="wp-block-heading">Utilize Relational Databases for App Resources</h3>



<p>Each resource type in an app should have its own table. Tables can be created dynamically, based on the resource definitions in the app definition. This will allow us to efficiently apply field and relational constraints on resources and perform more optimized queries. <a href="https://gitlab.com/appsemble/appsemble/-/issues/1731">https://gitlab.com/appsemble/appsemble/-/issues/1731</a>, <a href="https://gitlab.com/appsemble/appsemble/-/issues/1496">https://gitlab.com/appsemble/appsemble/-/issues/1496</a></p>



<h3 class="wp-block-heading">Dedicated App Databases</h3>



<p>We want to isolate data for different apps from one another. <a href="https://gitlab.com/appsemble/appsemble/-/issues/1629">https://gitlab.com/appsemble/appsemble/-/issues/1629</a>  [upd June 2025: done]. We are also considering shared databases for groups of related apps, that need to share data between each other. Each app would be configurable to connect to an Appsemble hosted database or an external database via a database connection string.</p>



<h3 class="wp-block-heading">Dedicated App Server and API</h3>



<p>The idea is for each app to have its own App Server, which would be separate from the main Appsemble Server and will connect to its own database.</p>



<h3 class="wp-block-heading">Standalone App Deployments</h3>



<p>The idea is, when an app is being published, to bundle all app related code (Appsemble Blocks, generic UI code) in a self-contained static bundle, that can be served on its own, for example in a Kubernetes pod. This should reduce the load on the main Appsemble Server and will enable each app to be independently scalable based on the load on it. <a href="https://gitlab.com/appsemble/appsemble/-/issues/1628">https://gitlab.com/appsemble/appsemble/-/issues/1628</a></p>



<p>You can track the progress in the linked GitLab issues.</p><p>The post <a href="https://appsemble.com/en/appsemble-architecture-changes-in-2025/">Appsemble Architecture Changes In 2025</a> first appeared on <a href="https://appsemble.com">Appsemble</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
