During this year I’ve been thinking about a side-project in order to learn and practice everything new (or not so new) about building software but, I’m not very creative… Today while I was making an order in Amazon, I remembered that my bachelor thesis was about a store like “Interflora” and I decided that I don’t need to think more: I’ll try to build my particular ecommerce site: “Jarc-mazon”. This isn’t about building something “productive” because I do not really know e-commerce business and I don’t want to create a start-up or fighting against Amazon…

Building something perfect or building fast is not the idea. The idea is building something iteratively, trying things, making mistakes and learning. I would like to put into the scene everything that sounds currently (methodology and technology):

  • Architectures & Techniques: microservices, microfrontends, CQRS, EDA, Kafka,…,etc (with theirs patterns, languages, tools, and frameworks)
  • CI / CD: methodologies, tools,…,etc…
  • ChatBots: conversational UIs
  • Big Data, Real time and Analytics: Kafka, Spark, Cassandra, etc…
  • Platforms: Docker, Kubernetes, Openshift, AWS, GCP, Azure, infrastructure as a code, Terraform, Ansible…,etc
  • Logging and Monitoring: Prometheus, Grafana, ELK,…,etc

It can be very ambitious but it isn’t anything under pressure or with defined deadliness. Therefore I can not guess when I’m going to finish or even, if there will be an end. The idea is building something alive and evolving it.

Where am I going to start?

I would like to start programming from now but I think it’s not going to be the right way. I’m going to do things well, as Architects do.

The first step is defining WHAT “Jarc-mazon” will be, that means what “my problem” is: organization, requirements, domains, actions, events, data, etc…

Once I know what “Jarc-mazon” will be, I’ll think how to do it in a conceptual and logical view (HOW). This is important because it’ll give a high level view of my system and its components and, from this view, I’ll be able to assign technologies, languages, tools,…,etc to each component.

From the logical view, the idea is being able to test different technologies for the most of components. It means to generate several physical views (WITH WHAT) because the goal is trying different alternatives to do the same task.

So, that’s all by the moment. I’m going to work in defining the “Jarc-mazon” business and I’ll post it shortly.