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.
Enter the Cloud Era
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).
Real Full-Stack Developer
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.
The writer is working at Metosin using Clojure in cloud projects. If you are interested to start a cloud or Clojure project in Finland or you are interested in getting cloud or Clojure training in Finland you can contact me by sending an email to my Metosin email address or contact me via LinkedIn.
- Kari Marttila’s Home Page in LinkedIn: https://www.linkedin.com/in/karimarttila/