beanfun! Building an Open Source API Platform
Positioned as a 'gamer life platform', beanfun! from Taiwan unifies gaming, entertainment, loyalty programs, e-commerce and instant through a simple and user-friendly interface. So far, more than 90 partners have joined the platform and beanfun! boasts over one million members.
beanfun! traffic is expected to skyrocket when it integrates more than 10 million extra members from its parent company and other subsidiaries in a single entry. This is in addition to existing marketing campaigns and giveaways which have already seen traffic grow exponentially. Faced with this challenge, beanfun! has adopted open source technologies to develop and deploy services, and is working closely with Microsoft on a comprehensive migration to Azure to fully deploy its services in the cloud. beanfun! currently adopts a variety of Microsoft Azure service elements including Azure Kubernetes Service for building, deployment and monitoring of Kubernetes services.
Addressing the two major challenges of member traffic growth and hardware investment
As the parent company brings all its services together in beanfun!, the technical team faced unprecedented challenges. The first wave of incoming member traffic from the parent company to beanfun! was estimated to be one million members at a time during the initial building stage. Such, the first set of challenges were to avoid service interruptions caused by system building and updating while ensuring system scalability and elasticity in the deployment capacity.
The second challenge is the upfront capital investment. In the face of such a large membership, if beanfun! had decided to use on-premise infrastructure, the initial investment would have been at least 100 servers. Considering the multiple technical issues derived from an on-premise solution, the beanfun! team decided to take advantage of the flexibility and advantages of cloud deployment with Azure, which fully supports open source tools – mitigating compatibility concerns.
Adopting Azure Kubernetes Service to solve service interruption
With services deployed by Kubernetes, beanfun! obtains sufficient support from Azure Services by using Azure Kubernetes Service to define and build Microservices orchestrated by Kubernetes via Visual Studio Code and fully monitor the Kubernetes environment from the Azure portal.
In the beginning, when the beanfun! team used Azure Container Service, the flexible mechanism was insufficient to accommodate the rapid expansion of beanfun! and the integration with Kubernetes was also limited. At the same time, the beanfun! technical team considered it was important to simplify procedures and reduce human intervention. By adopting Azure Kubernetes Service, infrastructure maintenance costs are reduced. Meanwhile, Azure Kubernetes Service has advantages including a high acceptability for open source codes, seamless integration with Azure DevOps, simplified Kubernetes configuration for rapid project deployment and a flexible subsequent architecture design.
For a platform provider like beanfun! with a sizable membership base, if each iterative update of the version requires downtime, it will inevitably cause inconvenience to a large number of members. Azure Kubernetes Service ensures that the version is updated without downtime, with no interruption of the services provided to users during the version update and simultaneous operation of version updates under controllable resources.
Using open source software to assist in development and simplify operation and maintenance
Azure Kubernetes Service is the first choice to include microservices and small programs in the platform during the building of beanfun! so the development team can focus on the integration level and avoid excessive development work and resource investment starting from scratch. Further integration with Azure DevOps Services enables a coordinated process to solve the issues of continuous integration/continuous delivery (CI/CD) pipeline and micro-service integration. It became easier to scale out/scale down, and also to increase the scalability of deployment horizontally.
At the same time, beanfun! uses a variety of open source technologies, such as Play Framework and Hazelcast with distributed architectures and Cassandra NoSQL Database, MongoDB and Node.js with distributed computing architectures. Considering the manpower costs for operation and maintenance, beanfun! embraces PaaS rather than just IaaS services.
"The boundaries of so-called open source or commercial technology no longer exist in the cloud era, what matters most is satisfying the environment we needed. Microsoft fully supports open source code technologies, such as Visual Studio Tools for Kubernetes, and it is also the only commercial team that continuously invests in the integrated development environment (IDE) of resource development." -Franma Hsu, Chief Develop Officer of beanfun!
Utilizing an open interface to expand new services and cross-industry cooperation
The top priority for beanfun! as a platform provider is to build cross-industry partnership and ecosystems. Its match point is the open application program interface (Open API). The faster and easier it can add services or partners from other sites, the more competitive beanfun! becomes. Meanwhile, the cloud architecture design is the key to ensure service efficiency and cost saving. beanfun! will continue to develop more personalized services, while evaluating hybrid cloud deployments to make them more resilient.
beanfun! is currently is applying the use of machine learning for data source planning, data cleansing, and user behavior analysis. beanfun! aims to strengthen marketing capabilities and expand target audience coverage through the introduction of artificial intelligence.
"Business owners who aim to run a platform economy can refer to our experience. Its open application programming to accelerate service migrations is a forward-looking deployment practice." – Franma Hsu, Chief Develop Officer of beanfun!.