The e-commerce industry is booming these days, especially since the beginning of the pandemic. Mobile technologies are changing the way we shop: today, more than ever, we have the option to not only virtually browse a shop’s products but enhance the shopping experience, for example, by trying on clothes or placing items of furniture inside of our home using extended reality (augmented and virtual reality).
E-commerce companies are always looking to create enjoyable shopping experiences that go beyond a single purchase to better engage their customers. However, most mobile teams are facing different challenges in developing and releasing performant e-commerce apps — affecting both the team’s productivity and customer satisfaction.
But before we start talking about these challenges and how to tackle them, let’s first talk about mobile e-commerce apps and the reasons why your business needs one.
Mobile apps for e-commerce
These apps are an online marketplace for buying and selling specific items and goods. You can make simple electronic transactions through your smartphones. Today's e-commerce market requires transformation from brick-and-mortar stores into an online presence and this is where e-commerce mobile app development comes in.
The reasons to build a mobile app for your e-commerce store
As you can see, the role of e-commerce apps is crucial and there are several reasons to create one, just to highlight a few:
- Smartphones rule the world:
- 6 Billion smartphone users in the world today
- Revenue growth:
- The mobile app attracts new customers and increases revenue growth across all devices.
- User behavior changes after COVID-19:
- COVID-19 significantly accelerated the e-commerce boom and had a huge impact on the way they purchase goods and services.
Because of that build, a mobile e-commerce app becomes mandatory for e-commerce companies.
The difference between mobile apps and web apps
Native mobile apps are built for a specific platform, such as iOS or Android. There are also cross-platform mobile apps built in Flutter or React Native. The concept behind these apps is that you can build both iOS and Android apps from one code base. In the end, all of these apps can be downloaded from Google Play or the App Store.
On the other hand, web apps, are accessed via the internet browser and will adapt to whichever device you’re viewing them on.
But because we are downloading and using the mobile apps on our mobile devices more than the web browser, there are different reasons why mobile apps are beneficial than web apps:
- Fast access to users
- Possibility to reach out to users via push notifications (offers, discounts, or new features)
- Better options to track user behavior
- More in-depth analytics
- Faster testing of new features
Must-have features in e-commerce mobile apps
As a regular app user, I’d like always to see the following features in most of the mobile apps, specifically in e-commerce apps:
- Personalized product recommendations
- Easy login & registration
- Fast loading speed
- Push notifications
- Advanced search options
- Wish List button
- Login via Social Media
- Featured product
- Quick checkout
- Secure and easy in-app payments
Of course, there are more features but in my opinion, the above list includes the most important features in any e-commerce mobile app.
Now let’s assume that we are working at an e-commerce company and we already have a mobile app but it’s missing certain features, such as push notifications or social media log in. Let’s say there are feature requests to develop and deploy them before the Christmas or the New Year for revenue growth. In this case, we have different problems affecting our development and release processes, for example:
- We are releasing new features every 2 months: this is a huge factor, because we have competitors and need to always push the new features live as quickly as possible.
- Shipping code is a painful process: we don’t have a clear deployment process or a release manager and this makes the deployment process chaotic and painful.
- Inflexible and fragile CI server: daily issues with our CI server, configuration, network, and devices consume time and effort from the team to handle these issues.
- Manual testing is time-consuming and requires a lot of effort. Plus, if we have automated tests, UI tests & emulators might be flaky
- App crashes: we have live crashes in our app and we don’t have an analytics service or tool to monitor and fix these issues.
Based on the previous problems, the expected result is that we have negative feedback & low ratings for our app in the app store, which means that our customers are not satisfied. Additionally, as e-commerce apps are constantly changing, the team should always be ready for that.
Key capabilities to accelerate Software Delivery (Mobile Apps)
Based on the book, Accelerate: The Science Behind DevOps, there are key processes for accelerating software development and delivery in a company. Here are these key elements:
- Implement Continuous Integration (CI)
- Use trunk-based development process
- Implement test automation
- Support test data management
- Shift-left on security
- Automate the deployment process
- Implement Continuous Delivery (CD)
Let’s talk briefly about these points.
What’s Mobile DevOps?
Mobile DevOps is a set of processes to implement continuous integration and continuous delivery practices into build and release processes to achieve a quick and frequent release schedule. They include different key components, such as continuous communication, planning, integration, testing, delivery, deployment, and monitoring.
Continuous delivery improves both the delivery performance and quality. It also makes work more sustainable by reducing the pain of deployment and preventing burnout.
Trunk-based development process
A source-control branching model, where developers collaborate on code in a single branch called ‘trunk’ *, resists any pressure to create other long-lived development branches by employing documented techniques. They, therefore, avoid merging hell, do not break the build, and live happily ever after.
Trunk-based development is a required practice for continuous integration. Continuous integration (CI) is the combination of practicing trunk-based development and maintaining a suite of fast automated tests that run after each commit to trunk to make sure the system is always working.
Source - https://trunkbaseddevelopment.com/#trunk-based-development-for-smaller-teams
UI Automated Testing
Mobile Automation Testing is a great solution to:
- Produce high-quality, robust, and reliable apps
- Optimize costs in testing
- Play a vital part in Mobile DevOps
- Make testing a whole team approach
- Select the right test framework, tools, configuration, and devices
Support test data management
Test data is important because it's required by all kinds of tests throughout your test suite, including manual and automated tests. Good test data lets you validate common or high-value user journeys, test for edge cases, reproduce defects, and simulate errors.
Shift-Left on security
Injecting security into the Mobile CI/CD pipelines at the early stages in the development process. It’s an approach to culture, automation, and platform design that integrates security as a shared responsibility throughout the entire Mobile DevOps lifecycle.
You can automate the process of submitting updates, such as code signing, profile provisioning, versioning, packaging release binaries, metadata, or screenshots.
Deploy features under Feature Flags/Toggles
Feature flags help create conditional feature branches in the code so that a particular logic is only exposed to particular groups of users at a certain moment. You can reduce development risks, easily perform A/B testing, and incorporate actual user input by releasing experimental features under feature flags.
And if you want to test these features, you will need to enable or disable particular features in our automated tests, so it’s required us to use custom functions for that as the following images:
The mobile release train
Once you have CI in place, building release trains can accelerate your release cycles. This approach will help you release more consistently and allow distributed teams to work more aligned around app development.
During the development phase, your teams have the time to review, test, and merge the features to the main branch that should be part of the train (always keep the master branch green) and when the content for a release is agreed on and ready, there will be a final testing phase
Move to cloud-based & mobile-focused CI/CD
Releasing mobile apps without the right tooling is a complex process for your teams. A mobile-specific CI/CD tool considers the unique challenges of building for mobile and has mobile-first features that help you build, test, and deploy mobile apps faster and more efficiently.
How it works
With Bitrise, developers automate the processes required for the integration, testing, and deployment of your mobile applications.
When an automated process is triggered, Bitrise creates a new virtual machine for your specific task on our managed MacOS and Linux infrastructure, ensuring a clean environment and consistent outcomes.
CI/CD as a Service
Cloud-based CI/CD can be described as CI/CD-as-a-service, the cloud-based CI/CD provider such as Bitrise manages the hardware, software, and other utilities required to keep the CI/CD service running and provides automatic software updates and security patches. This presents customers with the opportunity to save time and focus on building and maintaining software specific to their business.
In addition, customers can lower their costs and can deploy, scale, and upgrade business solutions faster while also being able to predict the total cost of ownership with greater accuracy. For example, if you're setting up a CI/CD tool for mobile development, you'll have to handle everything, from purchasing hardware, updating the operating system, updating Xcode/Android, updating the mobile toolchain, applying security patches, and managing authentication and authorization.
Let's assume that we design the following workflow for our Android app to implement the CI/CD pipeline, including checkout the code repository, building an app for the test, Lint or running the static analysis check, running the unit tests, then running the UI tests — all of which are part of our CI processes. Then, if everything is green and passed we can continue to sign the app, release to beta testing and deploy it to the app store and after that, we can send the test results to the team and a slack notification with the build status.
Then to implement the previous design with Bitrise, you can connect your source code and then add all the required steps to build, test, and deploy your app to your testers or to the different app stores such as Google Play Store and Huawei App Gallery.
This is an example of the Android CI/CD pipeline: a developer can start a workflow by committing or creating a new release tag. This will trigger a webhook on the Bitrise CI platform, then Bitrise will initialize a new VM to start building the Android app for testing. Then we can send the app and the test app to a cloud testing service, such as Firebase Test Lab, to execute our tests, then send the test results and the artifacts to different channels.
We can also integrate our CI with the test management tool to update our test suites and sign-off the release plan, then sign the app, deploy it to our QA and product managers and finally, deploy it to our beta users before rolling out the app to Google Play.
Mobile apps can crash for a hundred different reasons. Monitoring your releases allows you to detect problems before your users spot them and keep track of how your app is working. During this phase, multiple things are tracked, such as app consumption (how much resource our app is consuming), app usage, and stability (how many errors and crashes an app is generating).
Mobile apps are becoming more complex and with more diverse modules and mobile teams are growing and becoming large engineering teams. To tackle these challenges, you can start building a platform team to focus on developer productivity, app performance, tooling, and mobile infrastructure and help the mobile teams to scale and grow.
The advantages of Mobile DevOps and continuous delivery
Complicated toolchains are difficult to maintain and create information silos for teams but with DevOps, you can experience the following advantages:
- Successful collaboration between stakeholders, product managers, and developers
- Shortened time-to-release
- Guaranteed quality delivery
- Faster error detection and resolution process
- Improved customer satisfaction
- Increased employee engagement
If you need to learn more about how to accelerate your e-commerce mobile app development, you can watch my previous talk at the E-commerce Tech Summit.
We can summarize what we learned from this article in the flowing points:
- Mobile DevOps is a set of processes, tools, and mindset.
- Test automation is a vital part of Mobile DevOps.
- CI/CD is the coordination process.
- Testing and security are a whole team approach.
- Customers are the center of everything.
- Accelerate: The Science Behind DevOps
- Technical DevOps capabilities
- At which point do you need a platform team?
- Use Bitrise Steps like LEGO blocks to build up your CI/CD pipeline
- Build your own CI/CD pipelines by customizing your Bitrise Workflows
- How to increase speed and stability in mobile shopping apps
- It's time to move your CI/CD to the cloud
- From development to production: seven tips to optimize mobile app deployments
- A guide to feature flags in mobile development