Tag: app development

  • Red Hat Updates Virtualization Platform

    Red Hat Updates Virtualization Platform

    Red Hat today announced an update to its virtual machine platform that now can run on the latest version of Red Hat Enterprise Linux (RHEL).

    Version 4.4 of Red Hat Virtualization can now run on version 8.2 of RHEL. In addition, Red Hat has added Grafana-based dashboards for its Data Warehouse (DWH) service that IT teams can employ to track performance and analyze workloads.

    Finally, Red Hat Virtualization 4.4 simplifies configuring network services using its NetworkManager console.

    Peter Lauterbach, a product manager in the Cloud Platforms group at Red Hat, said support for RHEL 8 is core to the company’s overall strategy to enable IT teams to run microservices-based applications simultaneously with existing monolithic applications.

    Red Hat envisions IT organizations will deploy RHEL on bare-metal servers running Red Hat OpenShift, an application development and deployment platform based on Kubernetes that can run applications built using containers. In addition, Red Hat OpenShift supports kubevirt, open source software that enables kernel-based virtual machines (KVMs) such as Red Hat Virtualization to run on top of a Kubernetes cluster. Made available as Red Hat OpenShift Virtualization, that software makes it possible to run legacy monolithic applications alongside microservices-based applications on the same Kubernetes cluster as needed, said Lauterbach.

    That approach not only is easier to manage from an infrastructure perspective, Lauterbach noted it also can reduce latency between monolithic applications and microservices. Many IT teams in the wake of the COVID-19 pandemic have accelerated the rate at which they are moving applications into the cloud by encapsulating entire monolithic applications into containers that then can be ported to a cloud platform without the need to refactor them. They then can begin to modernize those applications by breaking them up into smaller microservices.

    Lauterbach also noted it has become a lot easier to leverage Kubernetes to move applications between platforms because interoperability between storage and networking services has improved significantly, thanks to the Container Storage Interface (CSI) and Container Network Interface (CNI) that have been made available by the Kubernetes community. In fact, Lauterbach said standards in infrastructure are living up to their interoperability promise.

    Red Hat, of course, has been making the case for open source virtual machines for decades now. However, in the wake of the economic downturn brought on by the COVID-19 pandemic, there will be many more organizations looking to reduce costs by relying on commercial virtual machine software. In addition, Lauterbach noted that now that cloud service providers such as Amazon Web Services (AWS) support KVM, it is a lot easier to create a hybrid cloud computing environment by deploying Red Hat Virtualization in a local data center than it is to replicate a VMware environment in a public cloud.

    It’s too early to say how the battle for hybrid cloud computing will play out in the months and years ahead. The one thing that is certain is the more diverse the IT infrastructure environment is, the more difficult it is to manage.

  • COVID-19, the New Normal and the Indisputable Importance of Mobile App Security

    COVID-19, the New Normal and the Indisputable Importance of Mobile App Security

    As the United States emerges from COVID-19 lockdown, it’s not back to business as usual. COVID-19 remains a very serious risk, and until a vaccine or treatment arrives, we will all need to remain vigilant. Further, it’s also certain that the new normal post-COVID-19 world represents a fundamental transformation in how businesses operate, with mobile business models taking center stage.

    For most businesses, their storefront was their most important asset for awareness and revenue generation prior to the pandemic. Having a good physical location was critical to bringing in foot traffic and allowing customers to easily discover them. In the new normal, however, digital location has become far more important as consumers are increasingly turning to their mobile devices. So, it’s critical for businesses to make apps that are easy to find and use in order to continue generating revenue going forward.

    The combination of the pandemic and growing mobile usage has made developing and updating apps not just a nice-to-have marketing tool, but a necessary task for business survival. An enormous number of previously casual mobile users are now depending on mobile apps for their banking, shopping and other day-to-day transactions. As such, businesses need to redesign their apps to ensure they’re easy and intuitive to use so they don’t lose those potential customers. This requires developers to iterate even faster to deliver an engaging, glitch-free experience.

    Unfortunately, in the mad rush to ship apps as fast as possible, security often gets short shrift in favor of features and functionality. According to the Verizon Mobile Security Index 2020, even before the pandemic hit, 43% of app developers said they knew they were cutting corners on security to “get the job done.” 

    Features Trump Security … Until They Don’t

    Now with business models hinging on mobile, developers can no longer rest on “features first, security later” mentalities. The struggle here is that implementing mobile app security is hard to do. It takes time, often extending the development cycle, and it’s expensive. Even if development teams are committed to implementing security, they may lack the skills to do so — good iOS and Android security engineers are scarce and in high demand.

    Eventually, however, poor security will bring consequences. Cybercriminals operate much like nimble startups, searching for opportunities, creating minimal viable malware and then continually improving it to become more effective. Case in point: the EventBot malware for Android that was discovered in April. It masquerades as a legitimate app, such as a banking app or other popular consumer that, once installed, harvest unprotected data from other apps on a device. EventBot also can intercept text messages (SMS) sent to the device, which enables it to capture the identity verification codes used by multi-factor authentication solutions. With access to these codes and the unprotected user credentials found in the app, hackers can easily launch account takeover attacks on tens of thousands of unsuspecting mobile app users.

    What’s more, the new normal post-COVID-19 world is causing a huge increase in app usage, cybercriminals and hackers believe that the time is ripe to start exploiting known mobile app security flaws. For example, it’s not a secret that most mobile apps lack basic encryption. Similarly, most apps can be tampered with, repackaged and distributed on non-official app stores. With malware like EventBot that can be embedded in popular apps that users already trust, the game for mobile app exploits has been upped dramatically.

    EventBot is just one example of why it’s critical for app developers to encrypt all app data (including the strings, resources and in-app preferences that are stored on the device), obfuscate code and shield apps from tampering and reverse engineering efforts. Doing so will stop EventBot and other potential attacks, and prevent cybercriminals from using apps as Trojans for additional attacks.

    Solutions to the Security Development Challenge 

    If a development team decides the best route is to implement security themselves, they should first make sure they have the appropriate skills in house. If so, a good start is to address each of the OWASP Mobile Top Ten vulnerabilities. 

    Other development teams turn to security software development kits (SDKs), which they will integrate into their apps to provide security. This reduces the scope of the coding but still requires developers to have extensive security experience, and it’s critical to vet SDKs before integrating them, because rogue and vulnerable SDKs are a serious problem in the mobile app industry.

    A final option is security automation through artificial intelligence. It’s fast, taking just minutes to completely secure an app without any coding, and compared to manual coding, it’s inexpensive. But, as you should do anytime you’re outsourcing security, do your due diligence to make sure the platform truly secures the app without introducing additional vulnerabilities.

    The new normal has elevated the importance of mobile apps as the primary way customers interact with businesses, and cybercriminals are taking note. So, in the race to provide an engaging, intuitive experience for customers, don’t neglect their safety. Focusing on features and functionality at the expense of security might pay off in the short-term, but the long-term consequences could be grave. Identify the security development model that will work best for your team, but make sure you implement security quickly. Cybercriminals will not wait for you to prepare before launching new, even more devastating attacks.

  • How to Build a Home-Screen Worthy CX

    How to Build a Home-Screen Worthy CX

    I’ve built apps, in some shape or form, for about 20 years now. During this time, I’ve always started the same way—design the user interface, build the backend services and connect everything together, adding in appropriate logic along the way. Recently, however, I’ve noticed that my design philosophy has changed. It’s less about how screen A interacts with screen B and more about how the app works naturally with the way the user interacts with everything else on their phone and the world around them. 

    Consumer expectations of apps have changed to something far less rigid than individual app silos. It got me thinking, what does this new consumer experience mean for app developers like me? I realized that I had started designing apps based around this notion that I wanted my apps to be worthy of being on someone’s home-screen. The more I thought about it though, the home-screen was my way of defining a design philosophy that I had unknowingly been building for. 

    Get on the Home-Screen

    The Google.com homepage used to be considered the most valuable space on the internet. Today, this is the home-screen of mobile phones, with companies such as Facebook, Google, Apple and Amazon all battling for dominance. In fact,  2 in 3 users in the U.S. keep their most used app front and center on the home-screen, with 21% of 18-34 year olds deleting apps because they didn’t like the way it looked on their home-screen. That’s a scary thought.

    As much as we would love to create the next app which users can add to their home-screen, the likelihood of that is pretty slim. It doesn’t mean you can’t tap into the success of these apps, though. Rather than trying to build an app which competes against social giants, you can use their reach to get your service in the hands of more users.

    When designing your UI, don’t think of your app as a walled garden that users have to open to use. To be successful, think about the CX of your service as it may appear in other apps—specifically those already on the home-screen. Digital disruptors, such as Lime and Uber, are leading the charge through integrations with apps like Google Maps.

    We are also seeing more traditional companies like Spirit Airlines allowing airlines to buy flights and change reservations directly through WhatsApp. Vero, the new kid on the social media block with an estimated 3 million users since it’s launch in March 2018, offers app developers an amazing opportunity for their service to be discovered early, and secure a place on the home-screen.

    Build for the Message, Not the App

    With social media now a part of the fabric of our lives, it is no surprise that communications and social apps are the most popular category of mobile apps. This gives mobile app developers a huge opportunity to improve the CX of their apps—as it is a pretty safe bet that almost every user has the capability to receive some sort of social media message, and every single phone has the ability to send and receive text messages. 

    When building your next app, in addition to designing the screens, make sure you design the message flow. Ask yourself, is the message urgent? If so, utilize text messages or push notifications to immediately capture a user’s attention. If the message is not urgent and more likely something a user may want to search for, rather than forcing the user to log into your app to find an order or receipt, why not use email as that archival system of record? With nearly 4 billion email accounts worldwide, and 90% of users checking their emails at least once a day, even if a user doesn’t have your app installed, they will still be able to find important records about your service. What’s more, most customers want the option to choose which channel they receive messages on. Knowing a user’s preferred channel for engagement helps developers build a better experience.

    The Lock-Screen Is the Next Battleground

    Let’s take a step further. What happens if you design the app without a UI at all? Doing so removes all of the distractions and forces you to think about how a user will gain value from your app. What are the services you need? What is the process you would follow? How will you get users’ attention? This last point—attention—is critical. With people’s attention span lasting approximately 8 seconds, building your app to grab someone’s attention at the right time is important. We’ve all been bombarded with spam and robocalls that constantly fight for a slice of that 8 seconds. Our natural inclination is to block out all messages. To solve this, I’ve started designing my apps around the notion of getting on the lock-screen.

    If you think about it, the lock-screen is even more valuable than your phone’s home-screen. To have your app or message appear on the home-screen, the user has to explicitly allow it, thereby signaling the importance of your service. This is incredibly powerful for an app developer to consider, especially when wearables, smart homes, connected devices, cars, etc., continue to grow and expand the potential surface that your users could engage with your app. Next time you build an app, consider how your app will grab someone’s attention via the lock-screen, then challenge yourself to think how you would do it if there was no UI at all.

    Winning the CX Battle

    A home-screen worthy design breaks down the boundaries of traditional mobile app development. Gone are the rigid constraints that a user must do everything with your app. By approaching app design that leverages how users already expect to interact with their phones—preferred apps, preferred channels and immediate attention—developers can make something different, something more engaging, something that immediately adds more value to the customer. When consumer expectations change, you’ll already be two steps ahead of everyone else.

    — Quinton Wall

  • Developing Apps for IOS 13: Things to Consider

    Developing Apps for IOS 13: Things to Consider

    Authors of numerous articles and videos have covered all the bells and whistles built into iOS 13, the latest major iteration of Apple’s mobile operating system. Rather than diving into all of these perks, though, I will focus on the changes for app developers.

    As it often happens, Apple introduced many proprietary applications that successfully supersede a number of third-party ones. It’s clear that QuickPath will now replace GBoard to enter text and provide swipe features. Also, the native secondary display feature for iPad called Sidecar will substitute Astropad and Dual Display solutions. Furthermore, custom stickers and animated emoji called Memoji can be used instead of the counterpart from Mirror AI.

    The to-do list application now comes with features that used to be a prerogative of the Things app users: you can set a date, create reminders with subtasks and configure various types of alerts based on location. The overhauled Files app allows users to share folders, connect to cloud services, leverage an archiving tool and do many other awesome things. The syncing of lyrics with Apple Music used to be a matter of installing Musixmatch solution, but iOS 13 has introduced a feature of its own for that purpose.

    There are two main conclusions you can draw from these ongoing tweaks. On the one hand, Apple is trying to hold sway over the ecosystem of the most popular applications. On the other hand, the company is developing a transparent and clear-cut array of services for integration and interoperability. 

    In other words, as long as your application hasn’t been replaced with Apple’s native counterpart, make sure its development occupies a unique niche aligned with the platform’s evolution strategy. Take into account the novelties that change the user experience and require that your coders take extra adaptation efforts.

    Dark Mode

    The 2018 macOS release came with the Dark Mode onboard. Users were expecting a similar feature for iOS back then, but it took Apple’s software engineers more time to implement it for iPhone and iPad. And here we go–Dark Mode is finally available in iOS 13. It functions as part of the Night Shift mode, and therefore the switching takes place automatically.

    It’s beyond all doubt that most users will keep the default iOS settings so that the mode is enabled depending on the time of the day. In the meantime, app developers have to do quite a bit of cumbersome work to support the new feature. They need to create UIs with variable colors while adhering to uniform graphics so people can enjoy using the app at any time with an equal degree of convenience.

    iOS 13 comes with turnkey instruments called Color Assets that minimize the amount of work required for app color theme development. iOS 11 and iOS 12 support this toolkit as well, but app makers relying on design for iOS 10 and earlier will have to stay on the sidelines of this progress.

    Standalone iPadOS

    Apple chose to depart from the general unification trend by segregating two platforms for their mobile devices. This approach gave rise to a separate branch called iPadOS. This is most likely a response to the low demand for the latest powerful iPad Pro models. Many users got the impression that the company actually created a professional, multi-functional gadget but failed to equip it with enough solutions to show its full potential. Neither applications nor compelling use cases were available to bridge the gap. The emergence of iPadOS is intended to change this as the independent, fully-fledged platform should match the hardware power.

    Overall, iPadOS bears a strong resemblance to the desktop operating system. It supports desktop-type scrolling features and the option to work with peripherals such as a mouse and trackpad. The revamped SpringBoard seems to bring some long-forgotten widgets back to the home screen. 

    Now that all of these modifications are in place, every developer should think of the iPad home screen widgets that their users might find handy. Perhaps it makes sense to add a widget rendering certain live information or providing helpful shortcuts.

    When it comes to multitasking, the all-new iPadOS appears to outperform macOS in many ways. For instance, iPad users can open multiple windows of the same app and quickly access favorite apps using the Slide Over feature.

    It means there are new scenarios the developers should consider. Among other things, they have to figure out which apps can be combined with theirs on the same screen; how to implement this without sacrificing the user experience; and what role–main or secondary–their app plays in such a tandem.

    To keep up with the new OS architecture, developers also need to ensure a resilient app layout. Enhanced multitasking means that your app will have to run seamlessly in multiple window sizes and proportions ranging from the traditional Full Screen to a swipeable tab in Slide Over mode. As a matter of fact, a similar interface design was available before; however, whereas it used to be optional, you definitely can’t disregard it anymore.

    Safari has also become a part of the maturity trend. Now it displays desktop site versions rather than mobile ones. The fundamental change, though, is that the browser has been fine-tuned at the engine level so the iPad can work with fully-functional web applications such as WordPress and G Suite. 

    Coders can benefit from this tweak as it poses a great alternative to masterminding an iPad-only application. They can save a good deal of time and money, additionally offering their users a readily available tried-and-tested web app if they have one, of course.

    Last but not least, the new Sidecar mode allows users to cast their Mac’s screen content to the iPad. This feature supports macOS Catalina. Aside from the secondary display perk, Sidecar allows you to use Apple Pencil in Mac apps. That’s one more way of leveraging iPad features without having to create a separate app version, which might make some developers question the need for such extra work.

    Data Rendering

    Dashboards are being definitely implemented in full swing in iOS 13. Lots of Apple’s native apps are using data illustrations on their main screens that reflect the event log, explain how to take advantage of new features and give comprehensive clues about various usage scenarios. This complex approach really differs from the purely functional one that used to be the case.

    The refreshed home page of Apple Maps is a good example of the current trend. It includes new tools to work with geolocation and arrange or add places to favorites. The Health app displays daily infographics, too. These features encourage users to open the application over and over.

    The ubiquity of real-time data and infographics has actually turned into a big trend for all Apple products, including smartphones, tablets, desktop computers and smartwatches. Therefore, if your app generates some potentially interesting or useful information, be sure to demonstrate it to the user. That’s what will fill the app’s dashboard. But first, you should understand what types of data your users prioritize: nifty content or strictly functional stuff.

    Photos

    The updated Photos app is one of the most conspicuous changes brought by iOS 13. You can’t go wrong if you say that creating and editing photos is currently among the main iPhone use cases. Apple developers have rethought the whole process to deliver the best graphics experience.

    The app’s home screen covers all the photo gallery browsing scenarios imaginable. It seems to have been designed specifically for hours of gazing at a time. In addition to the use of machine learning technology for choosing the most captivating images, the photo and video editor boasts amazing visualization of the settings and allows you to view the results immediately in the context of the other content. You can barely notice the process of switching between modes–from browsing to editing and taking photos. All in all, the iOS 13 Photos app exemplifies a mobile solution that surpasses its desktop counterpart in many ways.

    This is a serious challenge for developers because it calls forth a whole new level of coherent user experience in mobile app design. The users will be expecting equally elaborate and smooth apps flawlessly aligned with the rest of the iOS 13 ecosystem.

    Security

    Apple has marketed their operating systems as ultimately safe and privacy-friendly for years, consistently highlighting the leak-proof gist of both iOS and macOS as their competitive advantage. As many of you may know, it is not always the case considering how many new malware pieces target Apple users these days. 

    Trying to be on top of privacy defense, Apple updated the Location Alert feature lets the user know about background applications requesting geolocation data. Although, some programs need these details to operate properly, quite a few app authors keep such data harvesting enabled in the background just in case.

    In iOS 13, this characteristic can become a way to ruin your app’s reputation. As soon as the user gets an alert showing a bunch of points on the map that the application has been recently keeping track of, they are likely to follow the system’s recommendation and block this activity without a second thought.

    This security feature is meant to restrain developers from collecting redundant data that isn’t required for their apps to work properly. It also encourages app makers to notify users when and why they need to know their whereabouts.

    Sign in with Apple

    This feature has been anticipated for quite some time and it finally went live with the release of iOS 13. You can now use your Apple ID to sign into various websites and applications. This functionality secures the authentication routine by means of Face ID or Touch ID. Many developers will find it convenient because it introduces a simple and intuitive authentication workflow eliminating the need to store and manage passwords. The security of this process is now entirely up to Apple.

    Programming with Swift

    Apple has been endorsing the Swift programming language for a while. iOS 13 gave these initiatives a boost by introducing SwiftUI that overhauls the entire paradigm of creating applications for Apple devices. Effectively, it is a critical link between programmers and designers that was missing before. SwiftUI also propels a shift toward a reactive programming style. Apple Developer libraries now support a bevy of UI models. Furthermore, the Combine framework will be henceforth heavily used for coding. These instruments are currently in beta testing and things may change dramatically over time, though.

    Nonetheless, Apple has already provided developer tutorials aimed at facilitating the process of switching to reactive programming. The beta testing will definitely unearth a lot of roadblocks and there will be tons of bug fixes and tool replacements further on. However, Apple engineers will certainly address these issues in the long run.

    It appears that the age of Objective-C with its numerous drawbacks is doomed to fade away, succumbing to more competitive development instruments. 

    SwiftUI already allows programmers to compile applications without high coding proficiency. You can easily add modules that will complement your new app. That being said, designers and managers with entry-level skills will be able to compile prototypes of new software products.

    Overlapping Apps for iOS and macOS

    In the aftermath of the growingly close ties between iOS, macOS and the newly released iPadOS, mobile applications can now run on macOS. You actually couldn’t compile a mobile code using Apple’s desktop operating system till the summer of 2019, but now it’s possible. At the 2019 Apple Worldwide Developers Conference (WWDC 2019), experts claimed this could be done without having to use a simulator.

    However, since the layout structure of iPad applications has more in common with macOS style than the iPhone app layout does, we’re mainly talking about executing iPad apps on desktop machines. Given that some Apple apps look very much alike on different devices (Reminders and Stocks), the proprietor of the platform is expecting the developers of third-party apps to stick with the same uniformity across environments.

    It comes as no surprise that some mobile devices are starting to support desktop mouse and trackpad, and the user interfaces are being unified at the level of the smallest details. For instance, the design of the user icon has been concurrently updated in all the services and applications on iOS, iPadOS, watchOS, and macOS. To maintain the rebuilt environment, Apple is busy expanding the app development sections on their website. The company has provided UI kits even for products in beta testing and created a library of interface icons, lagging slightly behind Android in this regard.

    Summary

    To recap, it’s clear that Apple is trying to establish and push forward a convenient ecosystem for app developers. At the end of the day, this is one of the fundamental elements of a long-term competitive strategy and we may expect more changes with the advent of iOS 14.

    — David Balaban

  • Achieving Application Health Through Integrated APM

    Achieving Application Health Through Integrated APM

    Performance and availability mean everything to application users at both the enterprise and consumer level. Think about how much we rely on technology for our everyday communication—when Slack suffered from an outage this summer, it affected thousands of business professionals across the globe who use Slack to communicate, organize tasks and share information. In a sense, we are only as efficient and effective as the technology we use.

    With this in mind, it’s clear achieving and maintaining application health is paramount to overall business success. In part one of this series, we explored how creating and maintaining a healthy app involves not only ensuring it’s performing well via lifecycle APM, but also making sure it’s available when needed—making a log management solution that monitors availability, enables proactivity and reacts quickly to overcome problems is crucial.

    In order to help ensure a healthy application, we must first consider a few defining characteristics.

    Understanding a Healthy Application

    Even for humans, health is more than just being alive—if we’re not performing optimally, we’re not having the best experience possible. Optimum health for an app or website doesn’t mean it’s just up, but that it’s also performing in the way the market demands. For this, organizations need to implement an integrated APM solution to ensure top performance and continuous availability.

    However, achieving application health is easier said than done. Issues that arise for teams working in silos can lead to digital war rooms and blame storming. Organizational structure can get in the way of disparate teams working together to achieve performance and availability. How can organizations overcome this issue?

    Optimizing Performance and Availability

    As we know, each piece of the APM puzzle must be incorporated to achieve full-stack visibility and ultimately top performance: user experience, metrics, traces and logs. Following a few key best practices can help achieve overall application health.

    • Early Adoption: Implement application performance and logging tooling as early in the application development lifecycle as possible. Without integrating these tools from the beginning, organizations run the risk of having errors in availability and performance when they deploy the app. This is because one of the key benefits of a full-stack APM solution is the ability to analyze the performance characteristics of the application code and logic itself. If an application isn’t properly written, it can be so inefficient that no amount of resource in production can assure appropriate service delivery.
      Another critical benefit of early lifecycle APM adoption is the knowledge it delivers about app performance can be reviewed with business stakeholders to ensure complete alignment against shared goals—before going live in full production.
    • Integrated Solution: As mentioned above, the biggest challenge to achieving availability and performance is typically organizational structure. For most organizations of a reasonable size, separate teams monitor performance and availability; in some cases there may even be multiple teams monitoring performance and availability, specifically aligned with the individual technologies (e.g. compute, storage, network, web, cloud, etc.) underpinning each application. To get around the obstacles this creates, it’s key to have an integrated solution where every team is looking at the same set of information—the so called single pane of glass. The ability to share information proactively with management across teams is paramount to overall success and avoiding digital war rooms, or at least minimizing time spent in them.
    • Implement High-Value and Appropriately Priced Solutions: Powerful, easy-to-use solutions that will achieve integrated application performance and availability management for any type of organization operating either on-premises and/or cloud-based applications are key. Traditional APM solutions were either so complex to deploy or so expensive that ubiquitous adoption was not operationally or fiscally possible—depriving much of the organization and its applications the benefits of APM by restricting its application to only the most important subset. As a result, quick-to-value and affordable solutions are needed to enable tech pros who may be working in the organizational performance silo to get running quickly and show success to the organization.

    Conclusion

    Although apps serve their own unique purpose—whether that’s for consumer use enabling us to watch TV and movies on-the-go or at the business level to streamline work and communication—they’re all connected by a universal need: performance and availability. Companies must therefore prioritize application health, and in turn creating and delivering an exceptional user experience.

    — David Wagner

  • Low-Code Meets DevOps: A Smart Way to Manage Modern App Delivery Demands

    Low-Code Meets DevOps: A Smart Way to Manage Modern App Delivery Demands

    In a fast-moving and often fiercely competitive marketplace, companies need to embrace technology to stay relevant and drive growth. To this end, the business community is increasingly placing a high priority on digital transformation. In fact, more than 80% of organizations believe that digital transformation is crucial to business success.

    Digitally driven processes can power increased business speed and agility, as well as enhance competitive differentiation. Many organizations are now focusing on tools and methodologies that allow them to optimize more processes through accelerated internal application development efforts. Their goal is to be able to create, test and deploy the volume (and variety) of applications required to elevate performance and unlock more opportunities.

    In response to these growing needs for rapid app delivery, DevOps practices are evolving and becoming more critical to the success and agility of a business. According to a study conducted by Verified Market Research, the global DevOps market was valued at $3.62 billion in 2018 and is projected to reach USD 20.01 billion by 2026. Today, many businesses are combining DevOps approaches with low-code or no-code app development platforms, because these solutions provide them with the tools to build applications faster and more efficiently. This strategy helps to alleviate the immense pressures placed on developers today, by streamlining their workloads and responsibilities, while simultaneously enabling them to reduce their development cycle times.

    The Business Benefits of Fast, Agile Application Development

    Due to combining the roles, practices and culture of software developers and ITOps teams, DevOps allows a business to deploy apps more rapidly and with a higher degree of consistency. This is essential in organizations where there’s more pressure than ever before to deliver applications at the speed of internal and external demand.

    Often, the goal of adopting DevOps within a company is to reduce the tedious manual tasks that monopolize developers’ time and lead to app delivery backlogs. Solutions that help lighten and streamline the workload of DevOps–through automation and low-code development environments–are becoming more critical as a growing number of demands are being put on this still somewhat evolving, yet increasingly prioritized, team role and culture.

    Outlined below are a few examples of how low-code app development platforms can enhance the growing role of DevOps and improve the bottom line. This approach helps to:

    • Broaden the app development space to non-technical professionals: As mentioned before, low-code platforms enable a wider pool of less-technical users to work on and improve the speed at which applications can be built. Instead of the traditional app development team being solely responsible for a growing number of application requests, business users are now able to support digital transformation efforts by building and modifying their own processes, without writing complex lines of code.

    This approach makes the process of development more accessible to non-technical professionals. As a result, businesses can liberate their developers from routine coding work and redeploy these highly skilled individuals to more strategic projects that are critical to core business processes.

    • Facilitate faster application building: In addition to making application builds more accessible and less complex, the low-code environment also speeds up the entire development and deployment process. With this approach, companies can reduce development timelines from weeks or months to hours or days. Accelerating this cycle is crucial in any business that aims to outpace competitors.
    • Streamline consistent application deployment: Low-code platforms can integrate into toolchains (or a set of programming tools) that can automate the deployment of applications across various business environments. This ensures that apps created by non-developers can be deployed in the same manner as traditional, developer-based applications. This consistency provides a lower cost of ownership because it allows a low-code platform to more easily integrate into the business processes and workflows the organization already has in place. This minimizes the risk of disruption and irregularities.

    As businesses embrace innovation and elevate performance across the enterprise through agile, accelerated app delivery, the role and function of DevOps will continue to grow in influence and priority. Businesses that strategically leverage low-code solutions in combination with modern DevOps practices are likely to position themselves for growth, competitive differentiation and sustainable business success.

    — Holly Anderson

  • The Purpose of Microservice Architecture

    The Purpose of Microservice Architecture

    Microservice is an architectural style that can be implemented during complex application development within an organization. The implementation of this architecture allows the application being developed to be highly maintainable and testable, loose, independent during deployment and also strongly organized around business capabilities. In another way, the microservice architecture can be explained quite easily. It is a software development technique that allows for the structuring of an application. The structure of the application being considered will be that of a set of coupled services.

    Any application developed using the microservice architecture is easy to understand, develop and test. More so, the application will have a sort of rigid attitude to degradation in the long run. This is due to the concept adopted during design.

    The design of the microservice architecture ensures that applications are separated into smaller services, states, etc., until they become fine-grained and light in weight. Therefore, the modularity achieved encourages the adoption of methodologies that will allow for the division of labor. These methodologies will aid in the concurrent design, development and testing of the sub-services independently.

    While this architecture is suited to certain scenarios, it (like every other architectural style) has its demerits. Microservice experts advise on the study of the architectural platform before adoption. The implementation of the microservice architecture can be affected by a number of programming languages.

    Within the context of this article, I discuss the purpose of the microservice architecture, and also examine the upside and the reasons why they should be learnt and implemented. I also take a look at particular niches that allow the use of microservice architectures and why they use it.

    Architecture, Examples and Types of Microservices

    The microservice architecture is a major decomposition of the monolithic architectural method. The monolithic architecture had applications developed from the top to bottom and also had the entire development process run as a single unit. The microservice architecture works in contrast to this by enabling modularization. The core of the microservice architecture has requirements that are intensified and made possible by the separation of the primary task into smaller services, in which one service represents just a requirement, function or need.

    Examples of microservice architectures can be found in airline service scenario. If we pick out the flight booking component, we could find out that this primary task could be separated into inventory adjustment, seat allocation, fare calculation, timetable lookup, reward management and customer update.

    Applying Microservices

    Research has it that the majority of the companies that make use of microservices are quite on the high side. This majority includes organizations such as Netflix, eBay, Amazon, PayPal, Twitter, The Guardian, etc. This list also includes the United States Government Digital Service.

    The application of microservices can work with a number of technologies but a number of researches attribute effective usage of this architecture with the cloud environment and the DevOps environment as well. These tools and environments help to manage the operational complexities that affect the swift functionality of the architecture.

    Why Do They Use It?

    Most of the organizations that make use of the microservice architecture did transcend from the monolithic method. This is mostly because the method offers organizations the ability to decompose primary applications into smaller composed pieces. These pieces can then be built independently (which is easier) and also maintained independently as well. Developed pieces have the ability to communicate with each other and work together as well.

    The adoption of microservice architecture provides the management of an organization and everyone involved in the development of the application with a decentralized approach towards building the software. This approach breaks the development process into a series of deploy, rebuild and redeploy.

    The choice of a microservice architecture also grants organizations the ability to implement variant strategies, tools, techniques, etc., for services that are involved. Studies show that organizations that implement this architecture have a high proficiency rating. This is due to the usability of the architecture in independency, deployment, replacement, etc.

    The architecture encourages easy debugging of errors and detection of faults in general. When an error is spotted, the segment from which it originated can be easily traced and the fault can be found shortly after. This, as explained earlier, is because primary tasks are separated into smaller services. Each service can then be fine-grained to simple state. Before the simple state is attained, it is also possible that the service can be separated into a smaller group of services. This option helps the development team actualize a major concept within this architecture, which makes sure that a service handles just one task. Also, the architecture allows for the adoption of management techniques that assist the organization. These management techniques include options such as change management process, continuous software development processes, problem and incident management techniques, etc.

    Benefits to Using Microservices

    The benefits to using the microservice architecture include:

    1. The actualization of scalability when considering customer-focused services.
    2. Independent deployment of services.
    3. The ability to work with more than one development tool (such as  programming languages).
    4. Easing the modularization of tasks within the project as a whole due to the modularization of the application being developed.
    5. Support for a wide range of platforms and devices such as web, mobile, internet of things, etc.

    — Subramonian

  • How AI is Transforming Testing Today

    How AI is Transforming Testing Today

    Currently, there is much debate about how artificial intelligence (AI) will transform our lives. One of the technology’s key benefits lies in its power to transform traditional approaches to app development and software testing. Gartner identified AI-driven development as one of its top three strategic technology trends for 2019.

    Digital transformation is dependent on better-quality software, and software testing matters more than ever. However, the growing complexity of our software-driven world means that new, smarter and quicker forms of testing are critical in the race to build better software faster. But in a hyper-connected and complex environment, this is no simple task, and this is where AI-driven testing can help.


    AI Transforming Testing

    Like any new technology, there are exaggerated claims. However, when it comes to testing, AI is already delivering real improvements and making intelligent automation a reality. AI has moved far beyond an academic concept and is driving business benefits as opposed to hints to those organizations that have adopted it. Below are four of the key ways that it’s already transforming testing.

    Auto-Generation of Test Scripts

    There are undoubtedly complex test cases for which AI can’t auto-generate all the code. However, AI can easily auto-generate the code that clicks the buttons on the screen, fills out a form, logs into the app and other similar functions. Organizations that have deployed AI-driven testing are able to auto-generate 80% of code reliably, delivering substantial efficiency improvements. Along with auto-generation, AI achieves auto-maintenance: Tests are rebuilt when something in the digital product changes, ensuring continuous quality is maintained and further reducing the resource burden on human testers.

    Test Optimization

    If you’ve ever used Amazon, then you know that recommendation engine technologies are not that futuristic. AI can be applied to testing in the same way to help companies determine which test is most likely to find a defect based on the risk information gathered. Rather than taking a haphazard approach to testing, AI enables you to home in on the areas at risk—not only delivering efficiency gains but also ensuring a quality experience that delights.

    Release Impact

    Neural networks, combined with test history and data from current test runs, can predict how an upcoming release will impact users. For example, will customer satisfaction go up or down? Armed with this information, companies can make any adjustments necessary to ensure their users continue to be delighted by their digital experience.

    Customer Impact

    This is a key benefit of deploying AI-driven testing as you can determine the impact on the business from release updates. Neural networks, machine learning and other AI techniques can be used to understand how technical factors impact business performance. For example, are load times negatively impacting conversion rates? By understanding how releases will affect the business, you can make changes that will quickly have a positive impact.

    What Does the Future Hold for AI-Powered Testing?

    In addition to the core benefits that AI-driven testing is already delivering, organizations can expect to see additional benefits within the next 12 months that will further accelerate their ability to fully automate the entire testing life cycle.

    Failure Determination

    Current testing compares the result of a test with a pre-defined known good result. That methodology simply will not work with dynamic systems, such as an internet of things (IoT) device that interacts with multiple other devices which are constantly changing. AI is a key part of the solution: A well-trained AI system can determine whether a real user would consider the actual result correct or not.

    Persona Testing

    One size doesn’t fit all, and the ability to understand how your app reacts under different personas will allow organizations to understand what parts of the app are particularly good or bad for different personas. Armed with this information, you can optimize your app for your target audiences, ensuring an experience that delights.

    As every organization races toward digital transformation, delivering a high-quality digital experience is essential for survival. To create compelling digital experiences, companies need tools that can navigate applications intelligently, learn where quality issues are most likely to occur and identify the critical data correlations that will help developers resolve issues quickly. This is where AI is already delivering significant advantages to organizations that have adopted it.

    It’s clear that AI-driven testing is not a passing fad. Rather than taking a wait-and-see approach, it’s time to jump in and experience how AI can help transform app development and software. With AI-driven testing making a real and measurable impact on the business, you can’t afford to be late to this revolution.

    — Antony Edwards

  • Tech Pros: Plan for Failure to Breed Success

    Tech Pros: Plan for Failure to Breed Success

    Veteran tech pros will tell you: Failure does not always mean failing at something; it often means failing to do something. Failure can be unpredictable and accidental, but usually, a lack of preparedness causes the most significant incidents. Data centers go down, huge bursts of bot activity generate too many requests for a network to handle and every systems engineer knows that one day—probably sooner rather than later—AWS will go offline. Not preparing for the worst increases the likelihood of the outages, attacks, breaches and downtime that keep tech pros up at night.

    While this spans every aspect of technology, recently there has been a surge in app development failure planning through something increasingly known as “plannable catastrophes.” This pragmatic approach to failure involves considering catastrophes during the application design stage—anticipating disasters on the front end so an app can still perform even under duress. Preparing for catastrophes in this capacity can decrease the amount of time an app is down and give companies the upper hand if an unprepared competitor is experiencing a similar issue simultaneously.

    Plan for Failure

    The first step in planning for failure involves designing a way for processes to fail gracefully—for example, by switching the processes to a degraded service option rather than failing. If one service goes offline, the rest of the application will continue to work. A real-world example of this is enabling users to log in and view documents even if the search process is offline. Another way to plan for failure involves building in request buffering, so the components servicing the requests do not become overloaded. This is designed to prevent possible bottlenecks, especially if there is a spike in requests.

    The second step is to detect failure conditions quickly, so you know when to switch over to the degraded service option. Having full visibility is essential to developing early warning signals for system issues.

    Business Considerations

    Every time an application is down or running slowly, there is a direct impact on the business, either in lost productivity or lost revenue. It’s crucial to bring business context into monitoring performance metrics and to prioritize issues based on business impact, ultimately helping ensure that end users or customers have an optimal experience.

    It’s also key to include endpoint monitoring tools to quickly see if all the functions are online and load times are within range. Monitoring spikes in load or processing times, as well as resource utilization, is also crucial. Together, this will allow you to detect failure conditions quickly, ultimately helping you know when to switch over to the degraded service option—hopefully via automation.

    Creating a Holistic View of a Cloud Environment

    How does planning for failure come to fruition in app development and deployment? The answer lies in creating a holistic view of a cloud environment. Implementing this holistic view from the start of the process involves knowing that an application is going to fail—not if, but when—and planning accordingly. Top best practices include:

    • Shift Left: Integrate operations and monitoring considerations in application design and system architecture, coding, testing and preproduction. This helps both development and operations teams identify issues early, cut down on troubleshooting app issues later and react quickly to keep applications up and running even during spikes in demand or service failures.
    • Adopt an application performance monitoring (APM) tool: Full-stack visibility, from the end user through to the applications and infrastructure, is essential to having the ability to spot the early warning signs of a potential service disruption. To create that view, you should select an APM tool that can monitor the performance of the application holistically and allow you to design meaningful performance metrics and alerts. Implementing a curated collection of easy-to-use tools that seamlessly provide full-stack performance management without the cost or complexity of traditional APM solutions is key.
    • Be pragmatic in app development: Leverage APM tools in the staging or dev environment to measure the effect of variables on performance before the app goes live. Use APM tools to set up baselines at each phase, creating valuable metrics to flag when issues are about to take place and to detect failure before an app goes completely offline. Understanding the app’s baseline activities and response time enables tech pros to identify if the app is performing at the level it was designed. Tech pros can leverage platform capabilities to meet and exceed initial goals.

    Conclusion

    Failure is inevitable. Tech pros must ensure end users continue to have the best possible experience in the application and that business goals and service level agreements (SLAs) are met even amid crises. Preparedness comes in the form of taking preventative measures to help avoid and mitigate failure and having a plan in place to get back online as quickly as possible if preventative measures fail.

    Shifting left, building failure mitigation into the design phase and implementing an APM tool helps create a holistic view of the cloud environment and achieve these goals. Planning and building for failure help tech pros avoid and mitigate potentially detrimental issues, ultimately using failure to breed success.

    — Melanie Achard

  • Building Amazing Apps, Part 3: Optimizing the Network

    Building Amazing Apps, Part 3: Optimizing the Network

    This is part three of a series of three articles on building and delivering amazing apps at the edge. Read part one here, and part two here.

    Introduction

    There are millions of apps available today, and it’s incredibly easy for any user to download and install any of them with just a few taps on a screen or click of a mouse. If you want to build and deliver an app that will amaze users, you need to be able to differentiate from the rest of the pack.

    Over the past 14 years, I’ve been working closely with the top companies delivering the most popular apps, helping them optimize their apps for speed and scale so users get a great experience. In this three-part series, we’ll explore the fundamental steps you must take to build and deliver your own amazing app at scale that will keep users coming back for more.

    We’ll break these steps down into three key areas:

    • Front end: Covers the parts of the app that end users interact with.
    • Back end: Looks at the required origin infrastructure to support the app, including databases, application, web servers and more.
    • Network: The glue that connects the front end and the back end.

    In the final article of this series, we’re going to explore four things you can do on the network to optimize your app and make it more amazing:

    • Distributed DNS
    • Protocol optimization
    • Latency optimization
    • Edge computing

    Distributed DNS

    The Domain Name System (DNS) is a critical part of making sure your clients can access your applications (in fact, it’s a very popular attack vector by hackers today because if your DNS is down, nobody can access your PPP). Distributing your DNS across many servers can help ensure that your DNS (and thus, your app) is fast and highly available, so you should use a DNS vendor that has a large DNS server network in a wide range of locations.

    Validating whether you have a properly distributed DNS infrastructure is rather easy. Just follow these steps:

    • Identify how many name servers your domain uses and their IP addresses. Ideally, you want a number between three and 12—the more the better. You can use command-line tools such as dig and nslookup to identify the name servers of a given domain.
    • Use an IP geolocation system to find out the physical location of the name servers. At this point, you can get a rough idea if those servers are close enough to your end users. Hint: Some CDNs offer diagnostic tools that can be scripted via APIs to automate IP geolocation.
    • If you want to be more thorough, you may want to run connectivity tests between the main locations of the users and the name server IP addresses to make sure the network latency—i.e., how long it takes for information to go back and forth between the client and the server—stays under 100 ms (the lower the better). Some internet providers and CDNs provide looking glass technology, which enables you to run connectivity tests that originate from servers around the world.

    Protocol Optimization

    Once your clients know where to connect, how they connect and the protocol used is something that shouldn’t be neglected. HTTP/2 is the modern, superior network protocol, as it uses a more efficient binary format, header compression, single network connection, stream multiplexing and server-push. Actually, I was very involved in the early years of HTTP/2 (the standard was approved in February 2015) and have since helped some of the largest websites on the internet implement HTTP/2 and still spend a considerable amount of my time testing the new protocol in all sorts of environments. I’ve shared my findings in talks at conferences including Velocity and in the “Learning HTTP/2” O’Reilly book, which I co-authored. In a nutshell, most sites can improve page load performance between 5% and 15% by just switching the protocol from HTTP/1.1 to HTTP/2, which is as simple as flipping a switch if your website uses HTTPS.

    To illustrate that improvement, I created a demo site that tests the download speed of many small images over HTTP/1.1 and over HTTP/2 and displays the differences.

    Figure A

    As you can see in Figure A, the content loaded eight times faster over HTTP/2 than over HTTP/1.1 on my mobile phone over an LTE connection. That’s a huge improvement considering how simple it is to implement HTTP/2.

    According to the HTTP Archive, as of June 2018, 20% of hosts support HTTP/2, but those hosts are responsible for 40% of all requests—meaning HTTP/2 powers some of the web’s most popular sites.

    However, as explained in the HTTP/2 Performance chapter of the Learning HTTP/2 book by O’Reilly, there are a lot of factors that can impact the benefits of HTTP/2. Some of them you can control, while others—such as network packet loss—are much more difficult to tackle and can impact HTTP/2 performance because HTTP/2 runs over a single TCP connection.

    Note: TCP stands for Transport Control Protocol and some parts of its implementation (e.g., slow to start and cumbersome network congestion algorithm) can impact HTTP/2 performance because all the communication with the server goes through a single TCP connection.

    The future of the web is HTTP/3, which uses HTTP/2 over QUIC (a newer and more efficient transport layer protocol). However, as of April 2019, HTTP/3 is still in draft state and hasn’t been approved as a standard.

    Ideally, your servers should monitor the network connection and use different network protocols depending on the current conditions. Certain content delivery networks (CDNs) offer this functionality. For example, to maximize throughput, a top CDN provider uses custom software on its edge servers to dynamically use different network protocols, TCP settings and congestion control algorithms, depending on the specific conditions of each individual connection the server makes with an end user. In short, using the optimal protocol makes your app faster and more amazing.

    Latency Optimization

    Latency is a physical limitation of nature that impacts the throughput on computer networks. You probably know that whenever you are outdoors and there is a storm with lightning, you can count the number of seconds until you hear the thunder to identify how close the storm is (and if you count less than a second, you better get inside!). In computer terms, latency is measured as the time it takes to send a network packet back and forth between two systems. This concept is known as round-trip time (RTT) and is typically measured in milliseconds. You can use network tools such as ping or mtr to easily measure the RTT between two systems.

    Latency has a huge impact on performance because the further away you are from the server you want to connect, the slower the communication will be. As a rule of thumb, you want to ensure your latency is well under 100 ms. The easiest way to achieve that is by leveraging the local device cache to avoid extra network connections to the server and using a CDN to put your server closer to the end user.

    Here is a graph (see Figure B) showing that latency plays a larger role on page load time than bandwidth. As you can see, doubling the bandwidth from 5Mbps to 10Mbps results in just 5% improvement in page load times, and any bandwidth increase over 10Mbps doesn’t make a big difference. Reducing the latency, however, drastically improves the page load times. That makes your app more amazing for your end users.

    Figure B

    Edge Computing

    If you are a developer or a DevOps engineer (or just love tech) chances are you are within the TOP 1% of world population in terms of mobile computing power. But things you take for granted, such as resizing images on a mobile phone, are going to take much longer for many millions of internet users who have less powerful mobile devices.

    So, what can we do if running logic at the origin causes delays because of the network latency and running logic on the client side may be too slow on less powerful devices? The solution is edge computing, which consists of moving the origin logic to a server close enough to the end users that latency does not impact performance. CDNs are in the best position to offer this proximity because of their natural distributed architecture; a CDN can set cookies, rewrite HTML and resize and deliver optimized images for the screen size of your users so those images don’t take a long time to display on low-end mobile devices with limited CPUs.

    Edge computing is the next step beyond cloud computing. You should try to use a CDN company that offers you the ability of running business logic as close as possible to where your users are, to ensure that your app is fast and can scale without impacting your infrastructure.

    Summary

    In this series of articles, we reviewed some basic things you should consider if you want to build and deliver amazing apps at scale. This is not a comprehensive list of all the things you can do but provides you with some of the most impactful areas for app improvement.

    — Javier Garza