eSewa Pasal Case Study
About the company
F1Soft International is a software development company specialized in the development and implementation of mobile banking and internet banking to financial institutions in Nepal and overseas. It is a pioneer in the Fintech (Technologies in Financial Industry) industry and has introduced SMS Banking, Mobile Banking, Internet Banking and other transactional banking solutions in Nepal. Currently, more than 90% of the Financial Institutions have implemented solutions provided by F1Soft. F1soft Group now has 3 other companies under its group: eSewa Fonepay P. Ltd., Dharma TechNet, Shiran Technologies. They are recognized by various national and international bodies including the 2014 International Business Awards (Bronze), 2013 FNCCI Service Excellence Award and the 2012 Red Herring Top 100 Asia Award.
eSewapasal needed a scalable, reliable and secure platform to host their e-commerce website. During their development phase, they were using Datahub’s (local data center) hosting facility for testing purposes. They felt that the local Datacenter’s performance did not match their expectations. In order to go into full-fledged production, they would require scalable, faster and secure hosting which would most likely not be possible using Datahub. Due to a fluctuating number of users, if the provisioned servers would not be able to handle the peak production workloads, they would have to manually provision the servers during high usage. The customers were already experiencing some network problems with the existing hosting.
Genese, as a partner, explained the benefits of moving their current workload to AWS and suggested to adopt AWS services for hosting eSewapasal.
The following services were proposed as a part of the solution.
- We suggested the use of EC2 instances for hosting the website.
- Suggested the creation of EC2 servers on multi-az within a VPC.
- S3 for storing static files to reduce cost, and increase the availability and durability.
- Configuration of fine-grained control access of S3 resources using bucket policies and object level policies.
AWS Application load balancer:
- Suggested application load balancers to distribute the incoming traffic across multiple instances.
- Used to increase availability of the application.
- We suggested using RDS to scale a relational database in the cloud.
- Suggested multi-az MySQL database engine.
- Suggested Elasticache for in-memory caching to help with faster data retrieval and robust performance.
- Suggested to improve load and response time.
- Auto Scaling feature to automate the scaling of the instance provisioning during spike hours.
An e-commerce site like eSewapasal needs fast and high-performance content management and distribution.
Three environments have been created during the development phase of the website: Development, Staging, and Production. The development environment has been configured with minimal number and size as far as possible as it did not require high availability. The same configuration has been used for their staging and production architecture with high availability and fault tolerant configurations.
To increase the availability and fault tolerance of the website, multi-az within a VPC have been created for their EC2 and RDS instances has been created. Their main web servers reside in different availability zones under an Application load balancer which evenly distributes incoming traffic to the servers.
The suggested architecture includes two EC2 instances of type t2.small. The EC2 instances have been used as web servers. The main database of their application reside in Amazon RDS with Multi-AZ MySQL database engine. Redis has been used for in-memory caching. A VPN connection has been used for secure access by deployment & development engineers. Auto-scaling has also been enabled at web tier to handle spikes in traffic. Most of the resources have been placed inside private subnet so that they are not publicly accessible. NAT gateways have been deployed into the public subnets and configured with an Elastic IP address for outbound internet connectivity.