AWS Infrastructure / Database Design & Development
Everdapt is a web and mobile app developer from France, who wanted IT Svit to provision the AWS infrastructure for running their web app that uses the Neo4j database. The problem the customer encountered was the fact Neo4j does not have native scalability and redundancy features, so this functionality had to be implemented.
IT Svit teamhad to deliver the following list of tasks:
- Design the cloud architecture for deploying a web solution, using a specific database – Neo4j
- Ensure the system scalability and fault-tolerance
- Ensure the system security and redundancy
- Prepare configuration and deployment scripts and guidelines
We have accomplished all the tasks within time and under budget. IT Svit team has achieved the following results:
- We ensured the system scalability by using AWS CloudFront CDN for front-end scaling andAutoScaling groups for back-end cloud infrastructure components
- The system is protected with a bastion host, ensuring the security of access
- The application runs on several nodes located in various Amazon availability zones behind anAmazon Load Balancer to ensure optimal performance
- The system is modular, so even if one component fails, it does not impact the system performance and the faulty component is rebooted automatically
Partnership period: 3 weeks in December 2017
Team size: 2 people
Team location: Kharkiv, Ukraine
Services: Cloud infrastructure design and development, DevOps-as-a-Service, Web Development, product and infrastructure monitoring
Expertise delivered: AWS cloud administration, DevOps services, microservices and containerization, DevOps support team, cloud monitoring solutions
Technologies: AWS CloudFront CDN, Neo4j DB, Amazon Load balancer, Amazon EC2 and EBS, Kubernetes, Docker, Ansible, Jenkins
The customer wanted us to analyze the existing system configuration, come up with recommendations on ensuring its stable performance and implement the whole structure. We explored the existing solution and understood the main limitation was the lack of built-in scalability and redundancy features for Neo4j, so this had to be provided externally.
The main challenges were the following:
- Ensuring the redundancy for Neo4j database
- The app itself was under development, so the final number of modules, their size or mode of interaction was unknown
The system had to be scalable, secure and easily configurable
Project implementation and challenges resolved
We knew that application consisted of the following components: Customer-facing UI, API, and a Neo4j database. To implement the required solution we’ve split the application deployment into three parts:
- Amazon S3 storage behind the Amazon CloudFront CDN for Frontend part.
- Several API instances in different Availability Zones behind the Amazon Application Load Balancer (ALB).
- An Amazon Elastic Compute Cloud (EC2) instance for Neo4j database engine with Amazon Elastic Block Store (EBS) volume attached for data persistence.
Both the UI and the API parts operate in private networks, protected by Amazon CDN and Amazon ALB. This way the origin instances where the application is running are not available directly from the Internet. A bastion host is used for management tasks.