Monday, August 19, 2019

Do you analyze your requirements right?



Clear requirements is the key in any software development project. When you requirements clear, implementation is much easier and you don't usually find blockers since you can always reach for different mediums for help. Comparatively gathering and analysis of requirements is always hard since there is no one defined way unlike development. Effective requirements analysis is important therefore.

Complexity of clear requirements becomes more challenging in offshore development, where development team does not directly involve with end users or product owners day to day. This interaction is limited to workshops, conference calls and issue management system. Sometimes a development team member is placed onsite for better analysis of the situation which is effective but comes with a cost and frequent workshops also comes with different limitations.

With the time, requirements analysis has becomes matured and some techniques has becomes more handy and useful for getting requirements. 

Workshops are important!

Workshops is the way you can directly involve with the customer. This direct communication is way more effective since you can clarify whatever the problems you have easily. Workshops are important to make the bond with the customers as well as the customer to know you. 

Main outcome of  the workshop should be better requirements. there are many techniques for making this smooth and effective. It is always better to communicate with the customer before of what techniques going to be used so they can also be prepared. Understand which techniques will add more value for getting them and prepare accordingly. 

Brainstorming is traditional but a very effective technique for requirements elicitation. This is not a new concept but sticking to a time frame is important so workshop can cover everything it needs. Interviews with end users comes in handy so your designers can understand how the actual user thinks and give the user experience as necessary. 

One key thing is to have a basic prototype screens designed as sketches given, communicated and cleared out. This is where lot of inputs suggestions arguments comes into play and clarified.

Once again time is important.



Get the most out of workshops 


When you have a onsite development team this a good chance to sync-up and clarify on technical side as well. 

Workshop is point to define a clear process framework between all parties. After all you don't meet your client everyday and you communicate and trace things through issue tracking systems. So finalizing a better process is always important for smooth running of a project.

Planning your milestones are important and it is very important to discuss these and have a clear targets across. Feasibility of the deliveries comes into play and this is major point to clarify any blockers and mainly to clearing them out.

Image Credits: https://securityintelligence.com/

Wednesday, July 17, 2019

What is Yield in C# and when to use it

Yield is a keyword in C# which is not understood properly by many people. So what is yield? When you specify yield you'll only get next element from an iterator. Means you'll use yield with an iterator. This removes the need of an extra class or logic which holds the collection.

Simple example of usage of yield keyword



In the above example you are returning the results list. Which is an extra parameter. You can remove this by introducing yield keyword to temporary hold the value in each iteration.

By using yield you don't have to iterate the complete collection. You can breakaway from the collection using break statement. 

Good use cases of yield is when converting DataTable to IEnumerable<T>. Also see when not to use yield.


Monday, July 1, 2019

SQL Databases in Azure

Azure SQL is database-as-a-service. It is high performance, reliable and secure cloud database. Azure SQL can be purchased as Virtual Core based or Database Transaction Unit (DTU) based purchasing models. 

Azure also supports Geo replication for disaster recovery up to 4 instances. Pricing is same as for the primary database.


Data Sync in Azure SQL Databases

With Azure SQL you can synchronize with other databases. This is achieved via Azure SQL Data Sync option.


Improving Performance in Azure SQL

Intelligent Insights can be used to identify and troubleshoot Azure DB performance issues. Locking is a typical situation occurs in SQL databases (See finding locking queries in Azure SQL) Other than that 

  • Reaching resource limits
  • Workload pressure 
are some performance issues which could occur in Azure SQL. 


Securing resources in Azure SQL

Using features like Advanced data security and Dynamic data masking you can improve the security of your data. Dynamic data masking limits sensitive data exposure by masking them to non-privileged users. 

Advanced data security gives you recommendations on database administration. It analyzes and tells you what fields can be classified as well as runs vulnerability tests and gives recommendations. 


Monitoring Azure SQL Database

Database admins can setup alerts in Azure SQL to identify anomalies. There are lot of settings you can define using Azure SQL Alerts

Monday, February 4, 2019

Web App Deployment in Azure



Azure App Service Web Apps (or just Web Apps) is a service for hosting web applications, REST APIs, and mobile back ends.

Web Apps has,
You can also take advantage of its DevOps capabilities, such as continuous deployment from Azure DevOps, GitHub, Docker Hub, and other sources, package management, staging environments, custom domain, and SSL certificates.

You can scale up or out manually or automatically. App services are ISO, SOC and PCI compliant.

In Azure apps runs in an App Service plan. It defines set of compute resources for a web app to run. These resources are much analogues to a server farm.

Pricing tiers (Hosting plans in depth)

Shared compute (Free and Shared): Runs on same Azure VM as other App service apps. These resources cannot scale out- Intended only for development and testing

Dedicated compute (Basic, Standard, Premium and Premium V2) runs on dedicated Azure VMs. Only apps in same App Service plan share the same compute resources. Higher the tier, the more VM instances are available to you for scale-out

Isolated : Runs on dedicated Azure VMs on dedicated Azure Virtual Networks, provides network isolation on top of compute isolation to your apps. Provides maximum scale-out capabilities.

Consumption: Only available for function apps. Scales the functions dynamically depending on the workload.

Except Free and Shared tiers (which cannot scale out), if multiple apps are in same App Service plan, they all share same VM instances.

Azure - Comparison of Web hosting options

Azure offers several ways to host web sites: Azure App Service, Virtual Machines, Service Fabric, and Cloud Services. Azure even supports Azure dedicated hosts where you can configure to use a single physical machine for all your applications and servers in Azure.
https://docs.microsoft.com/en-us/azure/app-service/choose-web-site-cloud-service-vm

Deploying Web Apps from Visual Studio

You can directly publish to Azure Web App from Visual Studio using publish tool. When you give azure subscription details and web app you want to publish to, Visual Studio will directly publish the files to the web app. Kudu is the engine behind git deployments in Azure.

If you had hosted a web app with a previous version, when upgrading you'll run into Cannot find compilation library issue which can be solved by clearing wwwroot folder

Azure Web Apps carries capability to scale up (More CPU, memory disk space) as well as Scale out (Increase number of VM instances).

Monitoring Web Apps in Azure

There are few tools Azure provides to monitor web apps in Azure. You can define rules which gets triggered based on a condition such as spikes in request count, CPU usage etc.


You can also monitor Metrics in Azure. It gives real-time overview of how the application behaves in different metrics.



Logs are important in any web application to see what kind of errors, warnings applications gives when running. App service logs and Log stream helps you seeing these. You can configure these in App service logs to view in Azure itself via. Log stream or upload it to storage of file system.


Process explorer is not frequently used feature which enables us to see currently running processes.

Running Performance Tests in Azure Web Apps

Azure Web Apps allows you to run performance tests.


But theses performance tests are now deprecated. There are few reasons why cloud based load testing is reaching end of life due to how practical and pragmatic load testing are. Therefore performance tests in Azure is reaching end of life.

Deciding correct Azure compute service



Web Apps in AWS - EC2

AWS carries option of Amazon EC2 for app deloyment. You can deploy ASP.NET Core 2.0 apps in AWS

Powered by Blogger.


Software Architect at Surge Global/ Certified Scrum Master

Experienced in Product Design, Software Engineering, Team management and Practicing Agile methodologies.

Search This Blog

Facebook