
As a UI designer, I have had the privilege of witnessing weird and wonderful client comments, especially these classic and timeless ones. “Dear, *insert designers name*. Thanks so much for the latest round of designs. Really coming together nicely. Few points of feedback: *Insert long list of changes*”. That is by far my all-time favourite, and until this day I sometimes feel like I’m being punked when a client approves a piece of creative without any suggestions. It just doesn’t feel right. But I digress.
A few years ago I was part of a team tasked with presenting low fidelity (grey scale) wireframes to a large corporate client and we were going around the room introducing ourselves and sharing our roles and responsibilities. A time came for the UI team to introduce themselves and the client turned, looked at us and said “Oh so you are the guys responsible for colouring this thing in?” We giggled and continued with the introductions but that comment lingered in my brain for years.

Image credit: coloringcorruptions
Is a UI designer’s role really just to colour in wireframes? In oversimplified terms yes you could say that UI designers do colour in wireframes. There's a lot more to UI than just “colouring in” but I won’t get into that right now. If you would like to read up on UI design click here. Let’s ignore all the other hats a UI designer has to wear and only focus on the notion of “colouring in”.
Isaac Newton was one of the first humans to play around with colour, using sunlight and prisms (Photoshop wasn’t around back then). He found that clear white light was composed of seven visible colours, the colours we see in a rainbow. By doing this Newton paved the path for the likes of Johann Wolfgang von Goethe and all those who came after him including myself, to experiment with colour in a “scientific” manner.

Image credit: Granger
Goethe challenged Newton’s views on colour, arguing that colour was not simply a scientific measurement, but a subjective experience perceived differently by each viewer. His contribution was the first systematic study on the psychological effects of colour. Goethe’s views were widely adopted by artists around the world.
In visual arts, colour is the soul of everything, birthed to life by the artist into a canvas. Colour is power, actually. It can change the mood of the image in the blink of an eye. It can encourage, warn, appeal, frighten, highlight and persuade. It can support the words or vice versa – steal their power. It can share an emotion without anything being said. It can become a great weapon in the hand of a master.
In the sphere of UI design on the other hand, colour is one of the key steps to efficient results. It is actually a multi-functional and diverse tool able to fulfil several needs simultaneously. Unfortunately, humans don’t all interpret colour the same way. We somehow don’t share the exact same colour vision experience. Because the human eye and brain work together to translate light into colour, each of us sees colours differently. Your blue can be slightly bluer than someone else’s. However, sometimes differences in colour vision are tragic.

Image credit: Harry Quan
According to Colour Blind Awareness, approximately 338 million people in the world suffer from some kind of colour vision deficiency. Depending on the seriousness of the deficiency, humans can go from not seeing colour clearly, getting colours mixed up, not being able to differentiate between certain colours or lose the ability to distinguish colours at all.
Every kind of colour blindness makes it difficult for a user to have a great experience. At worst, colour blind people will not be able to use a product at all. This will upset a lot of users and a business will lose potential clients too. To avoid this, UI designers need to consider only a couple of simple rules when designing interfaces.
It is important to understand that colour blind people see the same colourful picture as the rest of us. Despite an inability to see some colours, colour blind people distinguish shades even better than average. Creating sufficient contrast between elements is an effective way of designing for accessibility. By catching the user’s attention and attracting them to particular elements supports quick and intuitive navigation and usability of the page or screen.
As much as colour is the soul of everything, one needs to understand that it doesn’t have unlimited powers. You shouldn’t expect it to solve all of your problems. However, when implemented correctly and paired carefully with considered layout, good typography, captions, iconography and so on, colour is able to beautify UI and improve UX.
Creating interfaces is not just about pure creativity. It is all about providing users with the product that will heal their pain and make their life simpler. So, in the perspective of colour choices and usage in UI, a designer should always remember that the interface should be highly usable, clear and accessible. There is never a universal solution or a one-size-fits-all solution to colour usage in UI design, so go forth, experiment, and colour in those wireframes.
Useful links
https://colorable.jxnblk.com
https://michelf.ca/projects/sim-daltonism/
https://www.awwwards.com/talk-escaping-convention-with-executive-creative-director-at-ueno-david-navarro.html
https://www.designyourway.net/blog/design/colors-and-contrast-in-user-interface-design/
https://blog.prototypr.io/how-to-use-color-in-ui-design-wisely-to-create-a-perfect-ui-interface-6e524bd023bc
https://medium.muz.li/designing-for-accessibility-the-colour-contrast-compliance-7d8902850ec7

In this tutorial we will take a look at Android’s Navigation architecture component. The purpose of this component is to simplify the implementation of navigation in our android apps. The navigation component forms part of a larger group of libraries called Jetpack.
Among other benefits such as Automatic handling of fragment transactions, Correctly handling up and back action by default, Default behaviours for animations and transitions and Type safety when passing information while navigating, this component also gives us the ability to visualise our navigation graph and see an overview of the flow of our app.
Let’s get started!
We will be building an app called CountryFact which stores statistical information of different countries in Africa. Download the starter project from my github using the below link:
Run the project. You will see a list of countries loaded from the CountryInfoProvider. When you click on a country you will be navigated to the detail screen containing all the information relating to the selected country. Play around with the app and loop through the starter code to familiarise yourself.
Add Gradle dependencies
To use the Navigation component we need to add some dependencies. You can get the latest dependency here. At the time of writing this article the below was latest so go ahead and add it to your Build.gradle as follows:
// Navigation Components
def navigationVersion = "1.0.0-rc02"
implementation "android.arch.navigation:navigation-fragment-ktx:$navigationVersion"
implementation "android.arch.navigation:navigation-ui-ktx:$navigationVersion"
implementation 'android.arch.navigation:navigation-fragment:1.0.0'
Next we will create a navigation graph for our application. The navigation graph is used to define all the possible paths a user can take to navigate through your application. It enables us to visually see our app’s entire journey from a given destination to the next.
Right click on the res directory and select New ▸ Android Resource File. In the New Resource File dialog, input countryfact_navigation_graph as the File name: and select Navigation in the Resource type: drop-down list. Click OK to create your graph.

Add a main entry point
Google advocates that we take the single activity, multi fragment approach when building applications. We will now set the activity_main.xml layout as our main entry point into our application. Open the activity_main.xml layout and update it as below:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.myricseptember.countryfact.ui.MainActivity">
The navigationHostFragment will be the main access point for all our fragments.
Let’s take a look at some lines of code in our navigation host:
android:name="androidx.navigation.fragment.NavHostFragment"
The above is a widget you add to your layout which is used to display different destinations from your Navigation Graph.
app:navGraph="@navigation/countryfact_navigation_graph" />
The above line is used to specify our navigation graph. Remember our navigation graph can be used to find all possible paths a user can take to navigate through your application and all defined destinations.
Next you will modify MainActivity to make use of the Navigation Component to handle navigation in the app for us.
Update MainActivity
Replace all the code in your MainActivity with the below chunk of code:
private lateinit var navigationController: NavController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
navigationController = findNavController(R.id.navigationHostFragment)
NavigationUI.setupActionBarWithNavController(this, navigationController)
}
override fun onSupportNavigateUp() = navigationController.navigateUp()
What are we doing here?
private lateinit var navigationController: NavController
In the above piece of code we are declaring an instance of our NavController specifically for this activity.
navigationController = findNavController(R.id.navigationHostFragment)
We then initialise our NavController using the findNavController() method and attach it to the navigationHostFragment that we created earlier in our layout.
NavigationUI.setupActionBarWithNavController(this, navigationController)
Next, to enable the ActionBar to show a back button whenever a child fragment is attached to this Activity. We tie the navigationController to the ActionBar for this activity using the NavigationUI helper class.
override fun onSupportNavigateUp() = navigationController.navigateUp()
Finally, the above line of code is used to correctly handle up and back action by default .
When our application launches we need to tell our application what the default destination is. This means that we need to specify what must be the first screen to be displayed to the user when the application is first launched. Let’s see how we can achieve that.
Default destination
Open the countryfact_navigation_graph.xml.

The red rectangles show two places you can click to specify your default destination. A dialog will open from which you can either search the fragment that you want to set as the default destination or you can manually scroll down the given list.
Select CountryListFragment as your default destination.
Once you’ve selected CountryListFragment you will notice that it basically shows blank with some grey text indicating that the preview is unavailable. Let’s fix that so you can see the actual preview.
Click on the “Text” tab to open the XML and replace the countryListFragment with the below piece of code:
<fragment android:id="@+id/countryListFragment"
android:name="com.myricseptember.countryfact.ui.list.CountryListFragment"
android:label="CountryListFragment"
tools:layout="@layout/fragment_country_list"/>
The only difference is that you added the below line of code in order for the preview to show. This specifies which layout to show for that particular destination.
tools:layout="@layout/fragment_country_list"
Cool! You’ve set your default destination.
Now that we have our default destination we want to navigate to the fragment that will show us the details relating to a particular country when selected by the user.
Navigate to next fragment
Click on the new destination button on the top left and select fragment_country_details from the dropdown. The CountryDetailsFragment fragment is now added as one of your destinations and will be the destination we will navigate to from our default destination.
When you select the CountryListFragment you will see a circle appear on the side. Drag the circle to the CountryDetailsFragment destination. Once done you will see an arrow connecting the two destinations.

Note: Just as with the countryListFragment destination remember to also add the below line in the countryDetailsFragment destination XML to see how the destination will look like.
tools:layout="@layout/fragment_country_details"
Next, open the CountryListFragment and replace all the code in the onItemClick() method with the below code:
view?.findNavController()?.navigate(
R.id.action_countryListFragment_to_countryDetailsFragment2)
Instead of using an intent for navigation we are now using the NavController to perform the navigation. You will notice we’re using an id that wasn’t created by you. The id action_countryListFragment_to_countryDetailsFragment2 was auto generated by Android studio when you connected the countryListFragment and the countryDetailsFragment destinations. With our new changes in place we no longer need the CountryDetailsActivity and the activity_country_details layout from the project so delete that.
Note: When the “Usages Detected” dialog pops up just click on Delete Anyway since its detecting usages that we will also delete.
Also remove the below from the manifest:
<activity
android:name=".ui.details.CountryDetailsActivity"
android:label="@string/country_details"
android:parentActivityName=".ui.MainActivity" />
Run the app and see the navigation component in action.
But wait! The information related to the specific country isn’t showing anymore? This is because we removed the functionality for the app to pass data between screens. We will fix this next by adding functionality for passing the data to the next screen.
Passing data to between Fragments
We will now be passing the country data based on the country that is selected from the list. Open the CountryListFragment fragment and replace the code in the onItemClick() method with the below:
val countryFactBundle = Bundle().apply {
putInt(getString(R.string.country_id), country.id)
}
view?.findNavController()?.navigate(
R.id.action_countryListFragment_to_countryDetailsFragment2,countryFactBundle)
Here, we create a bundle to store the id of the selected country which we will use to display the data based on the id in the next fragment. We then use our NavController again but this time with an additional parameter to pass the bundle.
Now, open the CountryDetailsFragment and replace :
val countryId = activity?.intent?.getIntExtra(getString(R.string.country_id),0)
with:
val countryId = arguments?.getInt(getString(R.string.country_id))
Run the app again to see if the selected country information is displaying.
The country information should now be displaying properly. But you’ll notice that the title is showing the fragment name which is definitely not what we want to show the user.
Fix the title
The title is auto-generated every time we add the fragment as a destination within countryfact_navigation_graph.xml. We can easily fix this by changing the title from within our navigation graph.
Open countryfact_navigation_graph.xml and select the Design tab if you aren’t already there. Select the CountryListFragment and change the Label on the right hand side to Country Fact. Next, we want the name of the selected country to be displayed as the title .Open the CountryDetailsFragment and add the bellow lines of code in populateCountryDetails() method:
(activity as AppCompatActivity).supportActionBar?.title = country?.name
Run the app again. You will now see that the title display correctly.
Great! Our app is now doing what we want it to do. But we can make it just a little better by animating the transition between screens. So let’s do that now.
Animate transitions between destinations
We are provided with the following animations to choose from:
- Entering a destination
- Exiting a destination
- Entering a destination via a pop action
- Exiting a destination via a pop action
Note: If you want to read more about the pop action follow this link.
To add some animations to actions do the following:
1. In the Navigation editor, click on the action(arrow) where the animation should occur.
2. On the right side in the Animations section of the Attributes panel, click the dropdown arrow next to the animation you’d like to add and choose from the animation options as discussed above.

Now run the app again. We now have some nice animation when navigating between the different screens.
Conclusion
Awesome! We created a simple app using the Navigation Architecture Component. There is still much more you can learn about when using the Navigation Architecture Components such as:
- Menu navigation, bottom navigation, and menu drawer navigation
- Deep links etc.
I look forward to your feedback and if, for some reason, you got stuck I would advise you to take a look at the repo containing the completed project.
Thank you for reading this article. Follow me on Twitter and on Medium for future articles.
This article was first published on Medium on 27 May 2019.
Ever wondered what UX/UI is or what it stands for? Even after you find out what it stands for you still ponder what it really is, what do you do, does it involve chasing people down and kindly harassing intel out of them?
You may be wondering who I am and what I do for a living for me to claim in the headline that everyone is a UX designer. My name is Freddie, a South African based UX/UI designer and I love the simple things in life (with an entire bottle of extreme served with it). I am a foodie, photographer, gamer, travel enthusiast, and did I mention foodie?
So onto the definition of UX/UI. The acronyms stand for user experience/user interface. Honestly speaking, the ‘/’ in-between UX/UI can make it a tad bit confusing. They are both user orientated but they are different. However, the two flow very well together hence the / makes them seem like they fought but don’t really want to leave each other.
User Experience aka UX is the understanding of peoples goals, motives, and conditions when performing a task.

https://www.researchgate.net/publication/ 220696314_Experience_Design_Technology _for_All_the_Right_Reasons
As you can see in the diagram above, the ‘self’ needs some kind of motive to perform a task. Within that task, there’s a goal you’re trying to achieve, but during that process, you might face obstacles that make performing or completing that task a bit challenging, making it difficult to reach your goal.
UX leans more towards research. It’s trying to understand who you’re building your product for, what those people are trying to achieve, and why are they trying to achieve this. Also what could possibly stop them from achieving what they want. The last thing you want is building something that only you understand and enjoy using when in actual fact you intended to build for a market.
Now, User Interface aka UI is a bit different from UX. UI is more visual orientated. As the saying goes ‘You eat with your eyes first’. If the food looks good, you are more inclined to want to eat it. How it appeals to the eye is important.
Ever sat through a lecture with 300 slides for 3–4 hours and all you just see is words, words, an endless sea of words. You eventually start hoping to see some images, pictures — anything to break the monotony of all the text. In today’s world, individuals are more prone to remembering content more effectively if it is visual or accompanied by a visual cue. This is the basis of UI.
The aim is to break down heavy content and make it look pleasing to the eye. There’s a number of ways to achieve this by using elements of design and your knowledge of different mediums. This is not only limited to digital products but expands to fashion, interior, culinary, and to even the most ordinary objects/products/services we use every day.
First impressions are everlasting right?

The Grand Tour (Amazon Prime Series)
Right now you’re probably asking “That’s all well and good, but how am I a UX designer again?”
UX is not just some fancy term made up for designers. Okay, maybe the word User Experience but the concept of understanding people has been there longer than we know. Think of UX as being a psychologist of design, essentially you’re trying to get into your consumers/users head to better understand their thinking.
One thing a lot of people don’t know is that they have some sort of UX knowledge which they don’t essentially call UX. Take musicians/producers, for instance, I listen to EDM and the best DJs travel the globe providing an amazing experience to people through music.
Now call me a noob for asking this but who on earth would pay for something they can listen to on their mobile device or stream on YouTube? The whole idea behind music concerts is to provide that amazing UX. The thrill of having to go through the process of buying your ticket online, waiting till the day, and partying till the midnight rain. Now DJs/producers/musicians don’t really call this UX.

In the music world, it’s well known as euphoria. The whole idea is to provide a pleasurable experience to individuals, such as that heavenly feeling you get when you sink your teeth into the most glorious dish you’ve ever tasted. We all have something that makes us crumble and say, ‘Now that was amazing’.
No Youtube video or a downloaded song can match the experience you get when you’re within that crowd and your favourite Dj is playing your jam and all the right things are coming together and you’re just like ‘damn’.
Right now I'm listening to the soundtrack of Blade Runner 2094 ‘Mesa’ and I must say, film producers and sound engineers really know how to captivate people.
Everything we do in our everyday lives, the products and services we interact with all have components of UX. Someone/people out there took the time to sit and think, ‘What will make achieving that goal that much easier?’.
Let’s be honest, if you had a goal and two choices in completing that goal, the easier route, and the harder route, any sane person will pick the easier route. (Unless you’re me, then you’d create your own third choice from thin air and make people gasp and wonder whether you’re the root of craziness or if you’re conjuring up sorcery.)
The experience you give to one is everlasting whether through a product or service. The idea behind it is to gain trust with your consumers/clients. For a cook, it will be through his/her food, a lawyer, through their reputation of won cases, an architect, through their grand structural designs. As for me, well, I love sharing what I do best. Design, culture, food, and photography.
So ask yourself, after reading this, are you a UX designer? I’d love to hear your thoughts.
There are many courses and workshops available today if you're looking to learn more about the theory of implementing Agile. Google the words 'Agile training' and you'll find reams of options for training courses and training providers. The challenge is knowing which courses to choose and why. We have done the hard work for you by selecting the top 7 Agile training courses you should consider in 2019 and beyond.
Where possible, and if your budget allows, consider an Agile course that is internationally certified. Not only will it benefit your individual skills but it will add to your career growth and resume. These seven courses come highly recommended in order to understand the benefits an Agile methodology can bring to an organisation:
1. ICAgile Certified Professional in Agile Fundamentals (ICP)
This course is a very good start for your Agile journey. It covers the history of Agile, the Agile Manifesto, the Agile principles, and a good introduction to some widely applied frameworks (such as Scrum, Kanban and SAFe) and practices. ICAgile fundamentals learning objectives delve into key concepts such as adaptive planning, value-driven development, team collaboration and frequent feedback for continuous improvement. It also focuses on what it means to be Agile and achieve organisational agility.
The ICP credential has the broadest target audience (even outside of IT) since it is appropriate for those new to Agile, and for practitioners who recognise the need to focus on “being” agile in addition to “doing” agile. An ICP certification is internationally recognised.
2. Scrum Alliance - Certified Scrum Master (CSM)
The Certified Scrum Master’s course provides everything you need to get started with Scrum, today’s most widely used agile project management methodology. If you have the knowledge and experience developing or managing software delivery projects or teams, but do not have expertise in Agile yet, this course is for you. The course is an introduction to Scrum and will foster a shared understanding of the topic. It is suited for all roles within the IT environment and very popular amongst Scrum Masters and Project Managers. (A non-certified, more affordable version of Scrum training is also available for those budget sensitive organisations or individuals.)
3. Scrum Alliance - Certified Scrum Product Owner (CSPO)
The CSPO training course uses Scrum to teach Product Ownership (Product Management in Agile) and provides a stimulating, experiential learning experience through the use of gameplay, hands-on practical exercises, real-life case studies and in-depth discussions of the various parts of the Scrum framework and how the parts fit together.
On completing the course, delegates are designated as a Certified Scrum Product Owner by the Scrum Alliance. As noted by accredited Certified Scrum Trainer, Iain McKenna and DVT Academy trainer, “A good Product Owner drives delivery of value to customers and users and therefore plays a critical role in a Scrum team.”
4. ICAgile Certified Professional in Agile Business Analysis (ICP-BVA)
The ICP-BVA's learning objectives focus on the need for value management, role scope and diversity. These include: How to change your thinking skills, value management behaviours, determine value in the initiative, communicate that value, analyse to determine value, explore the solution, manage artifacts and enable valuable delivery.
Deidre Forbay, trainer & senior business analyst at DVT says, "Business value analysis is a crucial aspect of any Agile project. Learn how to ensure that your Agile project delivers business value to your clients and how to facilitate value-driven workshops with this course."
5. Agile for Executives
If you are a CEO, Manager or in a role to drive value within the organisation, then this course is for you. This workshop offers clear, insightful guidance into the philosophies of Agile, yet also provides an opportunity to understand the frameworks, secrets on how to support and structure teams within the solution design and delivery spaces. The Agile for Executives workshop will challenge you to think differently while explaining the technicalities around Agile on a higher level. It focuses on the requirements from a leadership perspective, key roles to set you up for success as well as roadmap and budgeting guidelines.
6. Scaled Agile Framework (SAFe)
This two-day course teaches the Lean-Agile principles and practices of the Scaled Agile Framework (SAFe). You’ll learn how to execute and release value through Agile Release Trains, how to build an Agile Portfolio, and how to lead a Lean-Agile transformation at enterprise scale. You will also gain an understanding of the Lean-Agile mindset and how to apply the principles and practices of SAFe to support Agile teams, programs, program portfolio management, and to coordinate large Value Streams. Attending the class prepares you to take the exam and become a certified SAFe Agilist (SA).
7. Team Strengths
Agile is all about people and how to best work together to achieve a goal. The individual CliftonStrengths course (developed by Gallup), is one of the most unique and reliable ways in which you can develop teams in fostering a self-organising culture.
This enriching course will take team collaboration to the next level. It is recommended for anybody who is looking for the next level in individual and team development. It is also recommended for new as well as advanced Agile teams.
Develop a skill set that’s in demand worldwide—and empower your enterprises to succeed in a disruptive marketplace. By attending all or some of these courses and by gaining international certifications you will be able to shape your Agile career and benefit from the time invested in your future.
For more information visit https://www.dvt.co.za/training.
Can you teach an old dog new tricks? Yes you can!
This is Caesar, our Beagle. He’s 4 years old and he loves food. Any food!
I can teach him any trick if there’s food involved. He’ll make a great 3rd slip if the cricket ball was a cookie.

Old dog. New tricks.
Your 4 year old application can also learn new tricks. That cute puppy code-base that evolved into today’s resource hungry monolith can be modernised for the cloud.
In Greek, monos (single) + lithos (stone) literally means a single piece of stone.

The typical monolith application
I feel your pain. I’ve worked on many projects where customers explained to us how their “single piece of stone” application became so heavy that it often fell over when surpassing a certain number of users. Part of the solution is always to improve the quality of the code and the other part is application hosting at scale.
The cloud is great for running applications at scale. As an ASP.NET developer my preferred choice is always Azure App Services. It’s developer friendly. I can forget about Docker, Kubernetes, Yaml files and all things infrastructure while rather being customer-focussed so that I can deliver real features on time and on budget.
What a relief! Now I can focus on my application and leave the uptime to those who excel in enterprise-grade, secure, performant and compliant application hosting.
Scaling is important. As your business grows, your application will need to handle more traffic.
With monoliths, the only option is vertical scaling: Adding more RAM, disk space or CPUs. But there’s always a hard limit to scaling up your application.
With a few small changes you can modernise your application for hosting in the cloud. Azure App Services allows for horizontal scaling. It can scale out your application from 1 to any number of instances.

Scaling out your application to 3 instances on an Azure App Service
But there are a few things to keep in mind when preparing to host at scale.
Application State
If your application carries any form of state such as session data, in-memory caching and flat-file storage, it’s not quite ready for vertical scaling.
There should be a clear separation between processing and storage. Your application should contain user interfaces, API’s, business logic and data access methods, but storage should reside elsewhere.
Session data and caching ideally belong in a Redis backplane, while application data should be stored in a cloud database.
Data Storage
Select the cloud database engine closest to your current on-premise one.
Azure offers many data storage options such as SQL Server, MySQL, PostgreSQL and CosmosDB. CosmosDB has a Mongo API if you prefer a NoSQL database.
The databases are built for scale and you have a myriad of choices in terms of disk size, RAM and CPU’s. Many replication options are available as well.
Geography
When setting up your Azure App Service and database, make sure they’re in the same region. Your application should live as close as possible to the data.
If you’re in South Africa, be sure to make use of the newly added Cape Town or Johannesburg regions. Azure calls them South Africa West and South Africa North respectively.
Consumption
While scale is convenient, it’s important to keep an eye on the consumption as well. Azure offers a cost calculator to help with estimates up front, but the dashboard in the Azure Portal also shows your real-time consumption.
The benefits of Azure App Services are many. For me the following stand out.
- Almost any application can be hosted in Azure App Services
- Best practices are built in: performance, reliability, security, compliance
- Horizontal scaling allows for growth and peak periods
- Zero-downtime deployments ensure that customers are not interrupted
- The staging environment helps you test before going live
- Builds and deployments from any Git repository allows for reliable, repeatable rollouts
Whether your code is written in Python, Ruby, PHP, Java, .NET Framework or .NET Core, Azure App Services can host it for you.
As a Microsoft Gold Partner, DVT helps businesses like yours to scale for the future. Let’s set up a meeting and discuss your cloud requirements.
Now what happened to my cookie?
