(First published in karimarttila.fi)
Infra code and Clojure/script full-stack app code.
In my previous blog posts (AWS IoT First Reflections and AWS IoT Storage Considerations), I described my first AWS IoT platform project and its infrastructure building process. Now I have moved on to implementing the full-stack Clojure/script app to visualize the IoT data on that platform. While developing the full-stack app, I realized that I need to think about what full-stack app development really is and who is a full-stack developer.
The w3schools provides a concise definition for a full-stack developer: A full stack web developer is a person who can develop both client and server software.
Now that we have entered the cloud era in which most applications are running in the cloud, a new competence is required: the ability to create Infrastructure as Code. In many bigger projects, there is a DevOps team that is responsible for the cloud infra (actually a bit of a contradictory term since the whole point of DevOps is that there is no dedicated Ops team). This is because most application developers do not feel comfortable creating IaC solutions - they just want to be application developers (backend, frontend, or both).
In my latest project, I’m responsible for creating an IoT platform that can ingest a large number of IoT events and store them in two storages: all events in S3 based data lake and the latest events in RDS. I’m also responsible for creating a full-stack application (using Clojure and Clojurescript). It’s pretty easy to develop a full-stack app using Clojure/script since you can use the same language in both backend and frontend sides, and Reagent makes building a modern React-based single-page application easy.
I’m the only developer responsible for building the whole system (thankfully, a competent UI designer creates the UI layout design since I have no artistic eye). It is really enjoyable to work on a small green-field project like this - you get to build the cloud infrastructure and the applications running in the infra yourself. When implementing the infrastructure, the backend, and the frontend, you can create a coherent solution and optimize the overall development process. I would say that this is real full-stack development.
Perhaps we should define the concept of full-stack development and a full-stack developer in this new cloud era. You are a full-stack developer if you can create the cloud infrastructure as code and then implement the backend and frontend for your application running in that infra.
- Kari Marttila’s Home Page in LinkedIn: https://www.linkedin.com/in/karimarttila/