The Application hosted in Microsoft Azure performs very slow in comparison to normal websites. Being non technical relies on the technical co-founder to fix the issue. In-spite of few changes brought out, system is still not in satisfactory performance level. What are the factors that impact the performance? What are the key causes in general that slows the performance?
You can use a tool like Pingdom to get the details of why the page loading slowly. Other than that, you need an expert (like me) to look into which part of the backend is slow. It usually boils down slow database queries or lack of appropriate caching.
There are several factors such as the network latency, the system (VM or BM) performance, etc. for this issue. The cloud infrastructures such as compute, storage and networking have to be accordingly designed, application and database performance have to be tweaked, there are best practices for availing higher performance out of cloud-based applications, etc. All these need to be smartly performed to enhance the application performance.
First it's a misconception that is happening when it comes to Cloud solutions that they improve performance over apps, the Cloud Server was designed to remove the problem of needing to have Server maintenance teams who do little more than check that a machine is switched on.
Cloud doesn't override the need for good database design (Normalising Data) and efficient Indexing of tables. - though these really only come in as a problem when you have a big database of million and millions of records.
Also one should choose wisely the database that your using, for example, for a freight application you should really still be using an RDBMS database like Sql Server or MySql and not a NoSql Database - which was designed for Big Data that doesn't change (e.g Comments and Messages).
Cloud also doesn't remove the need for Application Tiers (a Tier is a machine or VM) and you should be using at least a 3 Tier solution... so therefore: Database is on one machine, Api is on another machine and Presentation is on a third (either a mobile or web server)..
You'd then have Api and Web server software replicated over various machines with a Load Balancer directing traffic.
You should then also be extensively using Caching methods in all Tiers, so that the Database isn't being accessed all the time. 1 in 5 requests should be to the database.
If you need an analogy: imagine a 1 man team compared to a 4 man team, compared to 4 departments consisting of 4 man teams...
If you asked a one man team a question, you'd get an answer pretty quickly, but if a million people (or even 10) asked that one man a question all at the same time, then he'd simply get overloaded and crash.
So we spread the info over a 4 man team, ask a question to man no 1, if he knows then you get your answer, if he doesn't then he asks the next man in the chain and so on... the work load is spread.
If you have 4 departments then you have many people in this chain who could answer the question, etc.
You get the idea... so, your solution needs to be spread across many VMs (in Azure)
Then you could look at solution architecture guides like Domain Driven Design (DDD), this helps to alleviate development and design problems, and you shouldn't put business logic into the app itself... this is known as principle of Separation of Concern.
There is a problem though when it comes to Tiers and DDD, there is a lot of code to be written, and this is what software companies spend a lot of their investment funds after they've produced their MVP and got traction.
LayrCake is a software platform as a service that helps companies like your to build all this code and produce a super software without having to know, think or worry about these kinds of issues.
If you're interested then I'd be happy to help and resolve your issues so that you can focus on selling and growing your business. We can be contacted at email@example.com
Hope this all helps and wish you success.
I'm CTO at a startup and a heavy Azure user. I think there are excellent pieces of advice in the various responses:
For someone with the correct skills set it will be very quickly obvious the general area at issue - page or code or database etc.
We had the same scenario the other week. All of a sudden a key page on our site that receives significant traffic started running very slowly. EG Instead of <1 sec to load we were at 15+ secs. We checked all our monitoring and worked our way down the line from the web apps for the UI, to the API that provides data to the web apps, to the Azure SQL database. Turned out a regular maintenance job on the SQL database had screwed with the execution plan for a particular database routine. We tweaked a couple of things and hey presto page loads were back to <1 sec. All in a normal day's work for a tech team.
We have had similar issues on AWS.
The key factors here are database optimisation and asking the system to do ALL the number crunching 'on demand'.
We're currently going through a process of moving the reporting functions to a different server, implementing cached reporting and optimising the database and how it is queried.
We expect a huge difference in performance.
Did you port the application from a set of servers (in house or data center)?
There are a few typical errors to make, but sniffing this out can be complicated. Can you tell us a bit more about the architecture of your set up?
Peter -Me being non technical - shall attempt to answer your question. The application is hosted in microsoft azure as a single instance (V12). Usage DTU quota - 45000 DTU / Current 10 DTU - West Europe / No Elastic database tool. Database SQL - Standard. Since it is in the testing stage, it is having very low load
Performance is ALWAYS a numbers game. Cloud services span a range of possible configuration choices. The performance implications of this can be severe. The first thing one must always to is gather information about where elapsed time is being consumed, and see if it can be reduced (I recently had a client-situation where 90% of elapsed time was being consumed by a now poorly configured file). On cloud-based environments, database, IO, and network operations are frequent causes of latency, but there are other ways to lose performance.
Hi Kevin, there could be many causes of Cloud application performance bottlenecks, frontend or backend issues. There are a lot of free frontend tools on the web. See Istvan's comment.
For backend tools, our company offers a free SQL analytics tool for download. It will identify you SQL bottlenecks and cache them without any code changes. You can check us out at www.heimdalldata.com.
Slow is somewhat relative. Did you guys determine the root cause of your application being slow? Is it slow because of connectivity issues (latency, speed, etc.), badly optimized application procedures (e.g. high CPU load), improperly sized hardware (low memory and high CPU) or large data (cloud solutions don't excel if your application output exceeds a certain size and it gets worse once you have higher user volumes).
The best advise is to figure out the root cause of your application being slow. Tools and/or a technical expert should be able to point you in the right direction fairly quickly.
Once the root cause is known, you need to determine what you can do to improve things. If you are lucky, you just need to increase CPU, memory or network performance. If not, you will have to dig into your application and work on optimizing it.
Best of luck!