Microsoft provides specific tools and programs that help SaaS businesses elevate their products, reach their customers, and develop their solutions into a profitable business. Below are the top 5 Microsoft tools to grow your SaaS business.
Adopting the cloud comes with incredible advantages. SaaS businesses, in particular, can use the cloud to scale quickly and increase availability without investing in expensive hardware. In addition, since Azure cloud’s security is pre-baked, you have even less overhead to worry about. And, finally, if you have an existing Windows Server and SQL Server license with Software Assurance, then you can pay a reduced rate when you move to Azure.
If you are building a new solution, it’s tough to know what your precise needs will be. Yet,Microsoft’s Solution Workplace will guide you through this new territory and help you build your solution, take it to market, and grow your sales. After answering a few questions about your needs, the Solution Workplace provides personalized checklists and resources. Now, you have step-by-step guidance through the tasks you need to complete along the lifecycle of your new solution.
You can even collaborate in the Solution Workplace with your entire team. For example, members of your marketing or engineering team can work simultaneously on separate steps but still have visibility about the whole project as you check off completed steps.
View thistutorialfor a step-by-step guide on how to use Solution Workspace.
Access to Training
Microsoft understands how important it is to build your team’s skills on Microsoft products and to stay up-to-date on the latest tools and technology. That’s why they provide several resources that can help you access training for your team.
Training Center provides role-specific learning paths that help develop your team’s talent and skill on Microsoft products and solutions. There are a variety of learning paths provided, everything from marketer to Architect.
Microsoft Virtual Training Days also provides accelerated remote training, covering a range of technical topics for Microsoft Azure, Microsoft 365 and Microsoft Dynamics 365.
Microsoft Docs has quick starts, tutorials, API reference, and code examples for end users, developers and IT professionals.
One of the major benefits of working with Microsoft is being able to extend your reach to potential customers. When you are a part of the Microsoft Partner Network, you can list your solutions on Microsoft’s Commercial Marketplace, which consists of two online stores: Azure Marketplace and Microsoft AppSource. By publishing your offer on the commercial marketplace, you are able to showcase your product to4 million active users across 140+ geographies and tap into new audiences and unlock scale.
As a partner, you also have access toMicrosoft’s Go-to-Market services to reach more customers. Resources and tools — such as personalized consultation to guidance for marketing assets — are provided as you prepare to introduce your solutions to the right customers.
Growing your SaaS business can be challenging but leveraging these Microsoft tools can help elevate your product, skill up your team, and extend your reach to potential customers. If you need additional support, Optimus can provide support for cloud migration, cloud management, DevOps, and QA and Testing. Contact us at: email@example.com
Just getting started? Download Microsoft’s SaaS Playbook that provides strategies for building your SaaS business, technical details about deploying your solutions, and best practices. They also include a calculator that helps discover your app’s financial potential.
https://www.optimusinfo.com/wp-content/uploads/2021/01/tools.png500500Jessalynn Tranhttps://www.optimusinfo.com/wp-content/uploads/2014/11/optimusinfologo.pngJessalynn Tran2021-01-27 12:34:532023-01-11 14:44:30Microsoft Tools to Grow Your SaaS Business
Like any software product, your website or web application requires thorough testing before it goes live to ensure a quality user experience. Web users are accustomed to a high level of functionality, responsiveness and usability. Increasingly, they lack patience for web sites that do not provide a fulfilling experience. Thus, testing the performance aspects of your website is critical.
Types of Performance Testing
Performance testing assesses your site’s efficiency compared to its specifications. Its main focus is overall responsiveness under average loads. This category of testing should be performed early and often in order to uncover imbalances in the software architecture or its implementation. Monopolization of resources, processing bottlenecks and unexpected latency are likely suspects, which are easier to correct early on rather than at later stages in development or testing.
The end result of these performance tests and subsequent software changes is a set of baseline measurements you apply whenever the web site is changed to ensure that responsiveness and processing efficiency are stable and improving.
Let us look at two specific types of website performance testing: Load Testing and Stress Testing.
After early performance test results stabilizes, load tests that simulate thousands or even millions of users over long time periods are appropriate for measuring software endurance and volume capacity. These take you one step closer to real-world conditions. These tests uncover buffer overflows, memory leaks, and responsiveness degradation.
Stress tests apply maximum burden on the website in order to uncover its breaking points. Equally important, these tests measure how gracefully your site crashes and recovers. Success is declared when the site can fail without losing data, does not create security risks and recovers quickly with minimal disruption to users.
Website Performance Testing Approach
When designing your web performance testing, use a logical approach that gradually narrows down on defects in design, development and deployment. Start with a clear set of objectives and measurable criteria for what your performance tests are to accomplish. Otherwise, you can waste effort testing the wrong things in the wrong places plus be unaware when the test effort is losing effectiveness.
Plan to start performance testing as early as possible in your development cycle to harvest the low-hanging fruit such as major imbalances in the software’s implementation. If possible, engage developers in the early stages of testing. Get them into the habit of examining performance, load and stress results as soon as they become available, so code changes are not delayed and subsequent testing is tweaked effectively with developer input.
To quick-start your testing effort, it helps to focus your testing and optimization efforts on the most-used or high-impact pages based on the percentage of traffic they receive, which you can determine using analysis tools or examining logs. This enables more efficient use of testing resources while deferring changes for rarely visited pages with minor impact on the customer experience.
Finally, regularly review the following do’s and don’ts of website performance testing, especially with regard to cloud-based testing. This will help ensure you are receiving the full benefits of the cloud and that your testing aligns more closely to the conditions of your site when it goes live.
The Do’s and Don’ts of Website Performance Testing
When it is time to implement the test plan, avoid common strategic and tactical pitfalls:
Do keep your in-house test infrastructure up-to-date even if you use cloud-based testing. It is your baseline environment for isolating cloud-based testing side-effects, which will drastically reduce the time for root cause analysis for many defects.
Do use your live site, if one exists, to guide load and stress testing parameters on the developing site. For example, an initial test load might be the number of actual peak-hours orders multiplied by your expected growth rate plus 20 percent overhead.
Do track both client and server-side traffic during non-peak and peak performance testing to determine ratios between traffic and processing activities, which often discovers imbalances.
Do test as many pages and combinations of page traversals as possible. Measure single page and page combination load times down to the component level.
Do pay attention to which pages or activities are consuming an inordinate amount of time relative to other areas of the website. This helps optimize use of your test and repair resources.
Do distribute generated loads geographically and by network segment.
Don’t ignore the dependency between page load times and user volume capacity. Measure both aspects at each stage of testing.
Don’t forget to process live web traffic logs to collect statistics on the types and volume of requests coming into your site so you can optimize load testing to reflect that reality.
Don’t run your load generation on the same cloud as your website to avoid contamination of test metrics.
Don’t assume that cloud testing is intrinsically less expensive than running on in-house infrastructure. In other words, keep your eye on the “meter.”
Don’t rely on a single cloud vendor as vendors’ distinctive functional and operational characteristics may affect test results.
Why Use the Cloud for Website Performance Testing
Website performance testing utilizing cloud-based tools and infrastructure offers many of the same advantages as cloud-based enterprise apps, such as cost reduction, faster test deployment and dynamic scaling:
Minimizes capital expense for on-site hardware and infrastructure while reducing ongoing costs for maintenance.
Eliminates long hardware acquisition lead times.
Offers choice in selecting vendor features most important to your website testing.
Provides immediate scalability to meet your performance testing scenarios.
Eliminates disruptions due to equipment failure or power outages.
Additionally, the cloud provides specific benefits that increase the accuracy and efficiency for website performance testing.
Cloud Benefits for Website Performance Testing
Realistic Performance Evaluation
Cloud-based performance testing supplies more realistic conditions beyond the corporate intra-net including those out of your control. Such conditions include unpredictable peak or event loading, network congestion or a varying device and browser mix. It also offers opportunities to performance test across global regions and time zones.
For example, your testing can take advantage of virtual infrastructure over specific or multiple regions, which might uncover issues with local network infrastructure, regional user conventions, translations or issues with large content delivery. The latter might, for instance, be alleviated by the use of a cloud-based CDN on a per-region basis.
Instant Swap of Test and Deployment Versions
Cloud-based testing has process advantages as well. The use of virtual server infrastructure plus state-of-the-art deployment tools offered by the best cloud providers enables testing different software versions by swapping instances within seconds.
For instance, instrumented test versions of your website could be exchanged almost immediately with the deployed version by redirecting your site address to the test version via saved infrastructure configurations. These are stored in version control along with the site and test code.
Website Performance Testing Tools
Many seasoned tools for testing websites exist on the market today. From simple page-load tools to advanced script-capable tool suites that test both client and server endpoints, there is something for everyone.
Successful site testing also requires highly experienced testers who know these tools inside and out including specific techniques for load and stress tests that web testing software may not cover.
RedBot is one example of a class of online test tools that measure load times, find bottlenecks or suggest optimizations for HTTP traffic generated by your site. While it does not provide exhaustive performance analysis, it is useful for initial website analysis to find obvious pain points and for ongoing spot-check sanity checks as testing proceeds.
This open-source downloadable tool is popular for website load and performance tests. It uses Java to simulate single and multiple servers. Many load test types are supported including HTTP/HTTPS, FTP, JDBC, LDAP, Java and JUnit. Other tools utilize JMeter, such as BlazeMeter which enables using JMeter in the cloud.
This is another desktop tool used for load, stress and scalability testing for websites based on .NET or Java. It tests traditional HTML sites as well as those utilizing advanced web technologies such as AJAX, ASP.NET, FLASH, Flex and Silverlight. Tests are created quickly without advanced programming skills. Loads can be generated in-house or in the cloud.
This free, open-source tool provides native browser testing remotely or locally using Selenium Server. The API may be accessed with Ruby, Java, PHP, Perl, Python, C# or Groovy scripts. Coupled with WebLOAD, multiple virtual web servers can be employed for realistic load and stress testing.
Locust is an open-source server-side tool that runs headless, which means user-driven performance tests can be automated via scripts. Virtual users, referred to as “locusts”, may number in the millions and be distributed over as many machines as desired to replicate realistic deployment conditions.
This well-known cloud-based tool supports web-based functional and performance testing. It enables realistic load and stress test simulating millions of virtual users across multiple geographic regions with cloud infrastructure.
This cloud-based tool allows you to simulate user behaviors without knowing a scripting language. It scales up to 150,000 virtual users with geographic load distribution. Their Pro version can perform complete validation of your site, which is useful when developing your performance test plan.
Flood.io enables website performance testing with virtual users over hundreds of servers. It has exceptional real-time monitoring and results presentation, which enables early termination of tests as performance problems are discovered. Flood.io supports Selenium, Apache JMeter or Gatling test tools.
Engaging with a Testing Partner
Your company spends a great deal of resources on the design, development and deployment of your web site, app or service based on your unique technical and market expertise. Software testing, however, may not be your forte especially when it comes to understanding the nuances of performance, load and stress testing.
You want the most realistic testing scenarios possible, but may not be keen on spinning up on all the testing technologies and tools available. You definitely do not want testing to become a bottleneck to your on-time release.
That is why it often pays to engage with a trusted, experienced QA partner such as Optimus Information.
At Optimus, we provide end-to-end testing services from development to production. Our performance testing scope includes load, stress, spike, configuration and cloud-based testing. We work with you hand-in-hand to clear the obstacles, take on the challenges and remove the risks of testing so you can focus on what you do best.
It is a well-known truism that if your website fails to respond within a few seconds that half of your visitors leave, perhaps never to return. Responsiveness is the gateway feature to keep your customers engaged with your web presence.
Despite the ready availability of website performance testing tools, there are a multitude of factors involved in delivering world-class responsiveness that require a high-level of performance testing expertise. These include app and library performance, platform capabilities, network load and so on.
Taking a step-by-step performance testing approach that ramps up demand on your site or service is overall the best strategy. This requires a thorough performance testing regimen that is realistic and replicates the highly variable conditions of the Internet. Often, a cloud-based, geographically dispersed test platform with the ability to handle millions of concurrent users is essential to that effort.
Attention to detail, diligence and understanding the nuances of performance testing will finally lead you to successful performance testing by your team or QA partner.
Introduction: Moving to the Right Cloud, the Right Way
An Enterprise Cloud Story
A large Canadian financial services organization decided to migrate one of its commercial banking applications to the cloud. Moving would save them over one hundred thousand dollars a month in licensing and management fees, while enabling them to introduce new service features faster. Greater agility and scalability for the future made cloud an easy decision for both IT and the line of business to support.
Everything went well during the six-month development cycle and subsequent pilot. Twenty-five clients joined the beta program and feedback on the application enhancements – new banking services – was positive.
Returning more than a million dollars per year back into the bottom line while being first to market with new offerings for business banking customers made this a win for both the line of business and the IT application developers. High fives all around.
The migration and retirement plan began in parallel. Porting more than 50,000 SMB clients would span 6-8 weeks meaning the existing application could be sun-setted quickly.
At one hundred clients, the new cloud app worked great. At one hundred and one, it fell to its knees. Clients could not log on, could not conduct business. The onboarding process was halted. The bank app-dev team scrambled to fix the problem.
Trouble-shooting was not a simple task. The code was complex. It took several weeks, several experts and hundreds of thousands of dollars before the problem could be isolated and resolved.
A memory leak was the ultimate culprit, but lessons learned included the following:
Artificial timelines set by the business and not challenged by project management;
A flawed project plan that had siloed teams working independently – emulating a waterfall, rather than an agile, approach;
A mix of in-house and outsourced developers who lacked expertise or training in the areas they were working in;
An architecture designed for a traditional legacy model was being replicated in the cloud, without taking cloud economics and best practice into account;
Ultimately, a lack of planning, lack of training and lack of understanding the differences between developing in legacy and developing in-cloud became an expensive corporate lesson. The legacy application was maintained much longer than planned for and this organization’s go-to-market advantage was lost.
Cloud has transformed the way we develop new software applications and modernize legacy applications. When it goes well, it delivers efficiencies, streamlines operations and enables any size of organization to react quickly to market pressures. We believe that it is not a matter of “if” but “when” your organization is moving application development to the cloud. This thinking is supported by many of the leading research organizations including IDC.
Avoid the Fire-Drill
At Optimus we are seeing more and more of our clients take advantage of cloud – in particular applications once thought impossible to move to the cloud – due to scale, complexity or simply because of their mission-critical nature – are now being migrated successfully.
Typically we see clients take one of two approaches when beginning a cloud migration project:
Detailed Migration Plan: Clients have decided to move a specific set of applications to the cloud and want help creating a plan and development life-cycle. They engage with us upfront to help including risk assessment, skills training and knowledge transfer, application development and testing, project life-cycle and management as well as help identifying areas of streamlining or efficiencies for business transformation. For example, one of our clients has a software solution for restaurants. They are moving their solution to Azure for scalability, flexibility and the ability to modernize their complete application on both the front end and back end. Our approach has helped them mitigate risk while proving anticipated value as each phase is completed.
Mid-Migration Troubleshooting: Clients are in the midst of executing an application development cloud migration strategy and have run into problems that they had not planned for – they bring us in to trouble-shoot and get back on track. One of our clients, a large engineering consulting firm, migrated some of their application to Azure without understanding or taking advantage of Azure services. As a result, they were not able to achieve their anticipated ROI. Our role in this project was to help them retrofit their application so that they could benefit from Azure services.
Obviously our preference is to engage with clients in the first scenario. It means a thoughtful approach where we are able to identify the right architecture and point out the most common design patterns for today’s cloud. There are fewer surprises and we are typically delivering to wins identified at key milestones along the way.
Scenario two is the “fire-drill” approach and while we are always happy to step in and help at any point, we prefer when our clients can avoid having to press the panic button during a major application development project.
In summary, both scenarios will work. The important part to remember as you transition:
Cloud is inevitable. Having evaluated and made a decision to move puts you ahead of many others.
Help is available. Every plan has the potential to run into obstacles. Optimus has experience, trained resources and the ability to quickly bring Microsoft into any project if needed.
Which Cloud is Best?
One question we are often asked is “which cloud is best”. As a Gold Partner for Microsoft we have our bias, but our bias is based on research, experience and facts.
We see Azure is an ideal cloud platform for the enterprise. And while Azure (and other cloud platforms) are always evolving, at the time of this writing, the following is true. Let’s take a look at some specific reasons we like Azure over AWS for application development for the enterprise.
In parallel, we believe that Google cloud is simply not robust enough for organizations who rely on Microsoft technology as part of their enterprise suite. Here is list of what we have found to be missing:
Google cloud does not have mappings for Microsoft/Azure:
SQL Database Migration Wizard
Application Gateway Web Application Firewall
Active Directory B2C
Azure Active Directory Domain Services
In summary, moving your enterprise applications to the cloud will deliver many benefits in terms of speed-to-market, hyper-scalability and reduced infrastructure costs. Planning and preparing for it, as well as engaging the right people to help you move to the right cloud platform will dramatically reduce your risk. If you can reduce your risk, you have a much better likelihood of achieving the outcomes you and your company defined at the onset of your project.
Chapter One: The Landscape for Cloud Application Development
Gartner has predicted that global spending on enterprise application software will grow to more than $201 billion by 2019. The spending drivers will be modernization, functional expansion and digital transformation projects.
This prediction was driven by Gartner research which further identified the following key trends:
45% of survey respondents stated that application modernization of installed on-premises core enterprise software is a top 5 priority;
41% of respondents added extending capabilities of core enterprise applications as a top 5 priority;
More than 50% of new software implementations are moving away from traditional on premises licensing and to consumption-based models such as SaaS, hosted licensing, subscriptions and open source;
Competing successfully in the digital economy is driving application modernization and re-engineering across the entire supply chain;
By 2020 75% of application purchases will be “build” not “buy” as organizations demand software that is “differentiated, innovative and non-standard”;
By 2020 more than 75% of organizations will deploy advanced analytics as part of a platform to improve business decision-making.
Today’s Cloud Drivers
Companies are clearly making the decision to move to the cloud. We are seeing the following trends in cloud application development:
Driver #1 –Storage Issues / Hardware Failures
The cloud decision is often driven by an immediate need for infrastructure. Either the client has constant storage issues or is experiencing compute or hardware failures. Typically at this point the client will say “enough – we need to make a change – we can’t afford to keep going the way we are going”.
The budget requirements to keep pace with the demands of the business is a big driver for moving to the cloud. More storage or more compute is expensive. Licensing renewals along with hardware refreshes add up, making it a logical point to pause and consider other options.
Companies immediately assume that they will need to move a large portion, if not all, of their data center into the cloud. This is a traditional IT perspective. “I need to increase my storage and add compute, it is time for a data centre refresh.” The conversation is around data centre moves, not around application development but it is a traditional conversation that IT is comfortable having.
Driver #2 – Line of Business Has an Urgent Need
The second trigger driving cloud conversations is when the business is coming to IT with a project they need to do. Similar to our example in the opening – a commercial banking application that needed modernization – the business may want to purchase a new application or refresh a legacy app to offer more for customers, meet mobility needs, drive better data insights or simply run faster.
In these cases, the business is typically looking for a fast time to market and don’t want to wait for the traditional length of time it might take to acquire servers, set up development and test-dev sites or even absorb the capital expenditure necessary for new infrastructure. From this perspective, the business wants to “move now” and is looking at the cloud and possibly to get going.
Driver #3 – Internet of Things
The Internet of Things is transforming industries and how companies can leap ahead of their competition. Examples include:
manufacturers who can predict when a component is going to break and schedule maintenance without bringing a production line down, saving hundreds of thousands of dollars;
retail products helping shoppers decide in a store what to purchase and why;
resources companies managing vehicles in remote regions, reducing accidents and roll-overs by sensing speed or dangerous driving and then better educating drivers.
According to Jim Tully, vice president and distinguished analyst at Gartner, enterprises will build and adapt their IoT implementations to include a combination of five key architectural components – things, gateways, mobile devices, the cloud and the enterprise.
With cloud as one of the five key components for an IoT architecture, enabling application development in the cloud will ensure your organization is IoT ready.
Chapter Two: Technology Evolution and the Benefits of Developing Applications in the Cloud
New technologies designed to enhance cloud application development are adding to the value of application development modernization.
Are You Using Containers?
Containers are becoming more and more popular in today’s application development architecture. Docker is the most well-known. It began as an open-source project and helps to automate the deployment of applications within containers, but there are also new container options coming into market. We believe we will see more and more organizations adopt containers as a standard for cloud app dev.
One of the benefits of using containers is that it provides standards around dividing applications and placing them on various physical and virtual machines. This flexibility means the ability to have more control over workload management and system fault-tolerance. In short, better resiliency, better performance and better scalability.
Replacing Monolithic Applications with Microservices
Becoming an agile organization, offering your company the ability to compete and revolutionize in your industry is next to impossible if you are operating monolithic applications inside of a monolithic architecture. Multiple dependences, test/dev processes and deployment constraints (a monolith needs to be deployed in its entirety) will hamper your ability to react to market demands or to quickly be proactive.
To counter this, much of the new application development is taking place as a microservice. A microservice is an architecture type that essentially means building many small services that can act and exist independently, operating instead with connectors that enable them to communicate and operate.
The benefits are obvious. Developers can quickly update and make changes to each microservice without having impact on an entire operation. In the case of any challenges or performance issues, roll-backs are swift and easy to accomplish. Testing is also a much faster and more contained process that does not impact the rest of the application.
Two Benefits of Application Modernization with Cloud
Agility through PaaS (Platform as a Service)
PaaS is an offering that makes your Agile app dev team even more agile. Even when you follow an Agile development methodology, you still have that process in the background where you need to start procuring your servers and you need to set them up and you need to work with IT to get everything up and running.
If you take advantage of a PaaS platform, specifically for those services, then your ramp-up time for your project or your wait time before you can actually deploy your application is dramatically reduced. For many organizations, it can be anywhere from three to five months before hardware is in the racks, connected and accessible which is a big hit on a project.
Azure PaaS has emulators, which makes it easier because your development PC is able to run on your code in exactly the same environment as it would run on Azure. That is because the emulators are really the emulators that run in an Azure production environment. If you develop something locally, then it essentially guarantees that it will run in the cloud as well. This saves tremendous time and makes your team more efficient because now you can isolate the pieces that you’re working on versus trying to debug or diagnose something that is running in a dev environment where there’s a whole bunch of other components running as well.
Rightsizing Your Environment
One of the challenges in a traditional on premises data centre is getting the sizing right. If you make a mistake, it’s an expensive mistake. When you size for the cloud and make a mistake, the worst that will happen is that for one month your usage bill has increased, but then you can fix it. Basically you can quickly right size at any time.
Another challenge is peak loads. In a traditional environment you need to plan your hardware for the maximum load, which is often only used during your peak business periods such as Christmas, tax season, end of month, etc. Many services in a data centre will idle around 1% to 4% of CPU usage. The memory is also often barely used but it has been purchased because the vendor has identified a reference architecture for a particular application based on peak performance. Much of the time, your server is not doing anything and that time is simply time wasted.
With Azure you can select a utilization number that supports daily spikes or movement throughout the day, and then rely on your scaling mechanism for daily or weekly peak times where you can add more service to cover the loads. Through dashboards you can monitor your CPU and memory utilization. As it grows, you can scale up to the next server type, making optimum use of your budget and ensuring the environment is always optimized.
Chapter Three: Wouter van Eck’s Do’s & Don’ts
Earlier this year Optimus and Microsoft co-presented at a workshop on how to build, migrate and modernize enterprise applications on Microsoft Azure. The following “Do’s and Don’ts” were presented by Wouter van Eck. We believe they are great tips and should be shared here.
DO: KISS – Keep It Stupidly Simple
The number of problems increases in relation to the complexity of the solution.
Reduces the time it takes to add new business functionality.
Reduces the amount of staff needed to develop the solution,
Reduces maintenance and support effort required.
DON’T: Apply On-Premises Architecture Behaviour to Cloud Solutions
The same old approaches don’t work.
An application doesn’t become scalable, or more stable because you add more servers to the cluster.
The cloud is inherently more secure, why would you add extra firewalls and security measures if what you need is covered with the use of Network Security Groups (NSG)?
So much is different, you need to understand how it can be done more efficiently?
Cloud is evolving – are you keeping up with best practices?
DO: Establish a Cloud Focused (Enterprise) Architecture Vision
Now that you have successfully moved to the cloud, what are your next set of goals?
Who is responsible for billing and subscription?
Who is the owner of a subscription?
How do you procure Azure?
Who is responsible for consumption?
How do you monitor consumption?
DO: Choose SaaS, PaaS, IaaS
When looking for a solution, aim for the least amount of responsibility.
Software as a Service (Office 365)
Software as a Service with Customization Options (DocuSign)
Platform as a Service (greenfield, app migration, extension)
Infrastructure as a Service (last resort, non-cloud ready, legacy or other off-the-shelf apps or systems (SAP)
DO: Establish Cloud Application Best Practices and Architectural Guidelines
Designing for Services is Different than Designing Services
https://www.optimusinfo.com/wp-content/uploads/2021/01/app-dev-ebook.png14061142Optimus Informationhttps://www.optimusinfo.com/wp-content/uploads/2014/11/optimusinfologo.pngOptimus Information2021-01-07 15:50:122021-01-07 15:51:08The Do's and Don'ts of Application Development on Azure