  As an application usage grows, its owner scales up vertically by replacing
old machines with more powerful ones. This methodology is expensive and leads
to resource waste. In response to the business needs, internet giants have
developed the microservice architecture, which lets developers divide up their
application into smaller units that can be hosted on multiple machines, thus
enabling horizontal scale up. We propose a triphasic incremental process to
transform a traditional application into a microservice application that
guarantees stability during the operation. Then we demonstrated such
methodology in a prototype microservice application based on an existing
monolithic application. First, the developer splits a monolithic application
into atomic services and aggregated services. Second, these services are
packaged, containerized, and then deployed on Kubernetes. During this stage,
Istio is deployed on the Kubernetes cluster to establish pod level
communications, delegate traffic flows and filter requests, and enable the
autoscaler. Other external add-ons, such as database connections, are defined
in service entry. In the last stage, we developed an algorithm guideline to
minimize inter-service calls by compiling all needed calls into a list and
perform one finalized call. Although it increases memory usage, it avoided the
wait time incurred during interservice calls. We then investigated managing
configurations using config maps, recommended a pipeline being developed to
perform automatic rollover.
