This week, I would like to talk to the more tech-savvy of you, and reveal some of the “behind the scenes” numbers of Arcsecond as a platform.
Arcsecond a SaaS (Software-as-a-Service) based on a classical client-server architecture. The client is downloadable in the usual address: www.arcsecond.io
and the server: api.arcsecond.io
.
Codebase
The latter is the unique source of truth, and it contains… 253 endpoints! Which is quite a rich backend which illustrate how sophisticated it can be to model a domain, such as the astronomical observations.
The backend follows the famous RESTful architecture. Here is the Amazon AWS description of this famous architecture style, which is a better description of what Arcsecond is following than what you can read in Wikipedia.
The frontend, that is, the app with which you interact, is written in the powerful javascript framework Vue.js. The whole app is bundled by Vite.js (whose creator was that of Vue.js…), and is a SPA (Single-Page Application). It contains 588 Single-File Vue.js Components, along with 253 auxiliary pure-typescript files (containing composables, utils etc).
Some of these auxiliary typescript files can be fairly complex, such as those that compute the Starlink satellite tracks pollution of every night and every single observation.
I wish I could find some other examples to compare with, but I think Arcsecond is a fairly advanced Vue.js app. Add a comment below👇 if you also wrote a Vue.js app, and share some details!
Like every developer, I struggle regularly with the organisation of my files. Given the frontend codebase if spread over 841 files, you may loose a lot of time to navigate. At the end of June 2024, the V5 of Arcsecond was released. And behind the scences, I adopted a completely new codebase organisation, based on specific domains, that match the different domains with wich you use in the app.
You easily recognize in the name of the folders, the name of the dropdown menus of the app.
Infrastructure
Arcsecond runs on a PaaS (a Platform-as-a-Service), called Render.com. As more explained in the official documentation, the storage of the data is using Amazon’s AWS S3 service. It is also true for all “statics” of Arcsecond (icons, images, css files, etc). The documentation is hosted by GitHub pages.
As you can see in the screenshot above, running a SaaS isn’t running a simple server. In particular, you need a worker for the background tasks (like sending you an email when you register!), and a “beat” for scheduling repeated tasks (like refreshing the data storage scans, or the exoplanet transits solutions).
What is not visible in the above is that… everything is duplicated! All the infra services above are duplicated in a “staging” environment, accessible in … www.arcsecond.dev
and api.arcsecond.dev
(but please, don’t abuse it). That way, all the new stuff can be tested for real before being merged into production.
Conclusion
I hope you liked this type of posts. It’s funny to share all this, as I spend so much time inside it. So now, you see that Arcsecond is built on solid foundations, and I now accumulate more than 7 years of running a SaaS.
Clear skies!
One response
[…] Des astrophysiciens. Que dire d’autre ? J’en étais un dans le passé, et je me reconnaissais chez certains, passant d’un sujet à l’autre avec enthousiasme. Ils sont souvent très enthousiastes face aux solutions techniques, mais rarement conscients de la technologie et du savoir-faire qu’elles nécessitent. […]