On one hand it was growing complexity, but on the other hand, also some plugins and modules started to be obsolete or discontinued. This fact led us and the client to a conclusion to make it better by using the latest technology stack not only “under the hood but also the engine” – where we run the software.
At this time Amazon Web Services (AWS) entered the game. Due to the fact, that we are Amazon partner already for years, we have decided to make the software tailormade not only for wishes and processes of our client but also for the system, where production, development, and tests will run.
We have created a dockerized mechanism of deployment which helped us to be swift with new deployments and had minimum downtime and risks.
AWS infrastructure has proven as the best solution, due to its scalability, redundancy and continuous increase of new features. The cost factor also played a big role, because, after some time, we could optimize the costs to almost half of the starting costs while taking advantage of reserved instances and shutting down the unnecessary machines when they are not needed.
Services used in this system are:
1. EC2 instances which are basically the servers which the code is running on
2. SNS (simple notification service) which is the base; we use it to communicate with the client's EMAIL or SMS
3. SQS (Simple queue service) is used to handle the communication between the information system and the warehouse module and also used for queueing the messages that should be sent to customers; this is important so we can monitor the state of the message and also if it fails, it is still stored at and can be delivered later in case of a system problem
4. S3 is used to store all sorts of files which are uploaded to the system; it is a document storage service which offers a large scale of features like encryption, temporary URLs, etc.
5. CloudWatch is used to collect logs and monitoring data from the application that can be later aggregated and used
6. RDS is used as the database for the application; from the old PostgreSQL database we switched to the RDS version because it is more scalable and also separated from the servers where the application run, so it enables us to load balance of the application through multiple instances
7. AWS lambda and DynamoDB are going to be used in a feature that is currently under development; the basic idea of this feature is to allow the end customer to perform an action in the system; since end, customers don’t have access to the system and the whole application is secured with a client-side certificate; we needed to build a mechanism that will allow us to do this in a secured manner
The latest version goes live soon, therefore we are proud to share with everybody the success of SWISS on the AWS platform with Davinci cooperation.