Robust Stoftware delivey
Sofwares are meant to evolve alongside your business needs.
Building modular, decoupled applications with a fully automated test suite provide a mean for engineering teams to prototype and build fast and secure applications.
This is why I chose many years ago to focus my expertise with technologies provided by Ruby and Ruby On Rails.
-
Why Ruby?
The Ruby community has been thriving for many years and has an impressive array of well written and fully tested libraries.
-
Why Ruby On Rails?
Ruby On Rails. is an enterprise grade web framework that is supported by this impressive community, making it easy to build fast and reliable software.
I also believe Continous delivery and Continous Integration are efficient ways to quickly deliver value to your business.
Delivering features as early as possible, one at a time is a great way to improve features as your business grows.
Modular and decoupled architecture
For small businesses
As a small business you probably only need a traditional webstack: a single web based application with its backoffice.
A single code base and it's databases is offen enough to bootstrap your business, it however still ought to be well written and fully tested, ensuring maintainabilty and flexibity for your sofware to be improved over time by any developer or engineering team.
For larger businesses
Sometimes simple is not enough, and your business requirements are more complex and needs to be addressed using different types of technologies.
This is when microservice architecture become very handy.
Small applications are much easier to maintain and evolve.
They do one thing and they do it well, they're easier to understand and easier to reuse with other parts of your infrastructure.
Composable architechures also allows to scale, tune and optimise the cost of your infrastructure.The main idea behind microservices architecture is that some types of applications become easier to build and maintain when they are broken down into smaller, composable pieces which work together. In other words, each component is developed separately, and the application is then simply the sum of its constituent components. In a microservices architecture, each service runs a unique process and usually manages its own database. This not only provides development teams with a more decentralized approach to building software, it also allows each service to be deployed, rebuilt, redeployed and managed independently.
This comes at a cost: a high cognitive load for your engineering teams.
However there is now tools such as Docker and its ecosystem to enable to your team to build in more complex environments allowing application developer to focus on more complex scenarios to solve your business needs.
Build and deploy your stack
Deploy your applications on Heroku. It is a very simple time and cost efficient for small business to deploy their applications. It's hassle free, developper friendly. No needs for system administrators or devops.
Deploy your applications on AWS, if your architecture needs to handle more traffic, higher work loads or you want to leverage the powerful components of AWS.
Technologies
I have professional experiennce with following technologies
Databases
-
PosgreSQL
Postgresql is a well known and very widely used database. It's supported by Heroku and AWS out of the box.
-
Redis
A very fast key-value datastore. It's very used for caching raw data, HTML. It's supports many different optimised ways of storing data and is often background processing or offline jobs.
-
ElasticSearch
Powerful search engine powering many of search functionalities accross the web.
-
MongoDB
A Schema less database. Very popular accross the javascript developers. Perfect fit for complex denormalised data structures.
-
Cassandra
Built by Facebook this the perfect datastore for your very large dataset. It's designed to handle huge denormalised dataset and is fault tolerant. It however requires to have a very good knowledge of the how the data is going to be queried. It is often required to denormalise the same data in various ways to yield its best performance. This is a perfect store for Data Warehousing and Event Sourcing.
Authentication
-
Devise
A powerful authentication library that supports many pattern and workflows. It's customisable, widely used and has a great documentation.
-
Doorkeeper
An Oauth authentication provider.
Perfect if you need to support securet authentication from various sources, like a frontend, a backoffice, mobile applications or integrate with third parties.
Background processing
-
Sidekiq
Very popular, multi-threaded background job proccessing framework fully integrated with Ruby On Rails
-
Sneakers
Another less populare message queue processing based of RabbitMQ
This a great framework to integrate more complex message asynchronous message processing. You can leverage RabbitMQ different messaging patterns.
Message Queues
-
Kafka
Built by Linkedin, a powerful very fast message queue. It's fault tolerant and very fast. It's perfect with very large datasets.
It however has bring more complexity to your infrastructure. -
RabbitMQ
Another very popular message queue. It's fault tolerant and fast, and support many messaging patterns. Easier to manage than Kafka to manage, it's in most case a very good choise when dealing with message based architecture
-
RabbitMQ
Another very popular message queue. It's fault tolerant and fast, and support many messaging patterns. Easier to manage than Kafka to manage, it's in most case a very good choise when dealing with message based architecture
-
Sidekiq
Very popular, multi-threaded background job proccessing framework fully integrated with Ruby On Rails
Frontend
Mobile first CSS frameworks
-
KubeCSS
A mininal CSS framework withs imple and very clean web components.
-
Bootstrap
Very popular framework, probably the on mostly used accross the web for frontend and backoffice applications. Very a large range of customisable components
-
Zurb Foundation
Very similar to Bootstrap, only with a different look and feel.