Becoming architect in today computing is no longer easy just like before. In the past, we just need to learn a computer, its architecture, and its software. Today, business uses IT like never before. Virtualization, Client Server, Distributed systems, and of course cloud computing. On this article, we will discuss what we need to learn as professional architect
Professional Architect in Certification
In professional world, certification is a measurement of how career development goes. Therefore, let see what the expectation of certification in professional architect
Azure Solutions Architect
The professional architect should understand
Implement and monitor an Azure infrastructure
Implement management and security solutions
Implement solutions for apps
Implement and manage data platforms
Design monitoring
Design identity and security
Design data storage
Design business continuity
Design infrastructure
AWS Professional Architect
The professional architect on AWS should understand
Design and deploy dynamically scalable, highly available, fault-tolerant, and reliable applications on AWS
Select appropriate AWS services to design and deploy an application based on given requirements
Migrate complex, multi-tier applications on AWS
Design and deploy enterprise-wide scalable operations on AWS
Implement cost-control strategies
Learning as Architect
You can learn to become architect by joining digital training such as:
Microsoft Certified: Azure Solutions Architect Expert - Learn | Microsoft Docs
Exam Readiness: AWS Certified Solutions Architect – Professional | AWS Training & Certification
The Real Architect
You should learn by doing, so lab is better
You should learn by reading a lot of material
You should practices problem – solution
Problem Background
You build a new application in the cloud, and you want to select proper database for your application. There are many choices for database deployment. Today we will discuss tips to choose the right database for your cloud environment. Let's get started!
What are the Issues?
When choosing the database in the cloud, you will have a lot of option such as self-managed database in the cloud or full managed database in the cloud. Although you already have a good benefit when implement a cloud such as scalability, operational simplicity (sharding, backup, recovery, updates), and cost efficiency when implement in the cloud. However, design consideration will become the main issues in the cloud.
medianet_width = "600";
medianet_height = "250";
medianet_crid = "858385152";
medianet_versionId = "3111299";
The Tips
Tips 1 – Leveraging the On-Premises database to the Virtual Machine
When I use this:
You have on-premises database that hosted on a VM. Doing this will make you easy to lift-and-shift
You have legacy database that not compatible with the full managed database services provided by your cloud provider.
You want to manage your database engine by yourself
Tips 2 – Using the full managed database
When I use this:
You don't have time and resources to manage your database. Ease of administration.
You have a compatible database with the cloud provider. Available, durable, and up to date.
You build a new application that use modern infrastructure that leverage the power of the cloud. High performance and good scalability
Tips 3 – Taking Care the cost
Self-managed database will give you lower cost than full-managed database. For the same size, you will get 50% higher cost by using full-managed database vs self-managed database.
Tips 4 – Using the Cloud Optimized Database
Today the cloud provider provides you a modern and serverless cloud optimized database such as Azure Database SQL Serverless or AWS Aurora serverless. These cloud optimized database is managed database just like SQL Azure or RDS. But it has more performance, more modern, more cost (23% higher than full managed database). If you have data intensive transaction you can choose cloud optimized database.
Tips 5 – Using the Non-Relational Database (NoSQL)
Beside the relational database, you will have non-relational database that work more simple, more high performance, and key-value access pattern. If your data can be developed in non-relational way you can use the NoSQL engine such as Cosmo DB or DynamoDB. Please make sure
The cost to store the data in non-relational is higher than relational database. i.e., 1 TB will cost 250 USD / month in DynamoDB while in Aurora will cost you about 100 USD
The availability of NoSQL (99.999) is higher than full managed database (99.99).
Is schema less database, so you don't need database schema only table.
Personal Conclusion
So, what the conclusion so far
For small and cost-effective, you should choose to self-manage is the cheapest option and full control
For more demanding performances you should choose full managed database.
When in doubt or high transaction database you can choose NoSQL
medianet_width = "600";
medianet_height = "250";
medianet_crid = "858385152";
medianet_versionId = "3111299";
Background
Our customer has AWS Subscription, and they want to deploy our .NET Solutions to the AWS. This article will give you step by step how to deploy the Umbraco Solution into the AWS.
Step By Step
Installing AWS Toolkit
Visit the AWS toolkit page AWS Toolkit for Visual Studio (amazon.com)
Download and install the AWS toolkit
Installing Umbraco
Create a new project in Visual Studio
Select asp.net web application (.NET framework)
Choose the default configuration and select empty web templates
Don't check any references
Click Manage Nuget Package
And select Umbraco CMS
Click install
Build the solution
Deploying to AWS
Go to your AWS console
Select IAM
Create user with Programmatic Access and as Administrator
User access key and secret key go to create profile in Getting Started page OR AWS Explorer
Right click on the Project and Deploy to elastic beanstalk
Create a new profile if you don't have one
Filling the profile and click deploy.
Please wait status until environment is healthy
medianet_width = "600";
medianet_height = "250";
medianet_crid = "858385152";
medianet_versionId = "3111299";
What is DevOps Engineer
DevOps engineer is a sensual role in a company that focus in delivering software engineering toolchain and culture in the organization. DevOps engineer is a software engineer that care not only to build a software but also to operation the software. The purpose of the DevOps is to improve the productivity of the developer and the performance of the operation team. It happens by creating a set of culture and computing environments that support their workflow. DevOps is closely related to the cloud computing. Cloud computing empowers the DevOps process to achieve more by reducing the complexity in the infrastructure. On this article, we will discuss how to become DevOps engineer. We will use DevOps toolchain from Microsoft or Amazon AWS interchangeably.
The Component of the DevOps
We already hear this about its thousands of times. The six practices of the DevOps are:
Continuous integration. A practice that integrates your codes into one single repository (such as GitHub). After that, the codes are tested and automated.
Continuous delivery. A practice that automatically deploy your tested codes into staging environments or production
Microservices. A practice that composes your codes into small pieces that has loosely coupled dependency.
Infrastructure as a code. A practice that automatically construct the infrastructure that needed for development and production.
Monitoring and logging. A practice that monitors your production infrastructure as well as your application through log and metrics. It also provides alert or automatic action based on the metrics.
Collaboration and communication. A practice that delivers the organization an environment to do communication and collaboration that blended with the DevOps initiatives.
medianet_width = "600";
medianet_height = "250";
medianet_crid = "858385152";
medianet_versionId = "3111299";
The Domain of the DevOps Knowledge
If you want to learn a DevOps and proof your DevOps knowledge you should understand these domains.
Domain 1. SDLC Automation. Understanding what DevOps and what toolchain that you can use.
Domain 2. Configuration management and Infrastructure as a code (IAAC). Be able to prepare the infrastructure with IAAC method.
Domain 3. Managing monitoring and logging. Be able to setup and to configure toolchain that related with monitoring and logging.
Domain 4. Applying policies and standard automation. Be able to enforce the security, governance, and policy to DevOps environment.
Domain 5. Recovering from incident. Be able to do restore operations in DevOps environment.
Domain 6. Managing High Available, Fault Tollerance, and disaster recovery. Be able to design, to implement, and to manage best practices architecture and approaches in DevOps environments.
That is the basic of DevOps knowledge domain that you should understand, let's discuss more. In another post.
medianet_width = "600";
medianet_height = "250";
medianet_crid = "858385152";
medianet_versionId = "3111299";
The Concept
Running application on top application is a great news! However, it does not mean that there is no problem within the solution. The codes sometime behave not right and you need to identify and fix it right away, In order to do that, monitoring and logging provides useful information to understand the behavior of the codes.
Monitoring: a process to monitor a variable (metric) in the application
Logging: a process to write useful information AND metric into a database or a storage
By default, logging is collecting data and monitoring is watching the data that is collected. After monitoring, the system can do two types activities:
Act: for example, running a script, doing auto scale and notify the developer
Analyze: for example, creating a report, show an anomaly, and metric math.
The Technology
In the cloud we have two technologies:
Monitoring an application: for example: Amazon X-Ray or Azure App Insight
Monitoring an infrastructure: for example: Amazon CloudWatch or Azure Monitor
medianet_width = "600";
medianet_height = "250";
medianet_crid = "858385152";
medianet_versionId = "3111299";
The Metrics
What are recommended metrics to monitor and log, you can see the table
StackWhat to monitorLoad BalancerHTTP codes, Queue length, latency Virtual Machine CPU usage, CPU credit, Memory, Status Check FailedNetworkNetwork in and out, LatencyI/OUsage disk, disk write / disk readApplicationInterested variablesAuto ScalingState of Instance (Start/Pending), Min / Max Group Size, 400 / 500 codes
The Log Behavior
In general, the log will be stored in 15 months in major log services such as CloudWatch or Azure Monitor. However, you can make it persistent in storage such as blob or storage. Here is an example in AWS. You might want to monitor continuously by streaming the data. For example, when we are using IOT device. We can also provide tags to add useful information for our log.
medianet_width = "600";
medianet_height = "250";
medianet_crid = "858385152";
medianet_versionId = "3111299";
.NET is a first-class citizen in Microsoft Azure. However, you might have a customer who want to develop with .NET but use their existing Amazon AWS infrastructure. Is it hard to start with non-Microsoft environment? This article shows my experience when having Microsoft .NET solution but hosted in AWS.
Terminology between AWS and Azure
As a developer, we might think that is a solution in AWS does not exist in Azure (or vice versa). The Good News are cloud computing environment in Azure and AWS have similar terminology. Is just like buying a coke with brand Coca Cola vs Pepsi, you will have similar terminology
Amazon EC2 vs Azure VM
S3 vs Azure Storage
Amazon RDS vs Azure SQL
Dynamo DB vs Cosmos DB
Elastic Beanstalk vs App Services
medianet_width = "600";
medianet_height = "250";
medianet_crid = "858385152";
medianet_versionId = "3111299";
You can find a long list of this comparison here. In conclusion, you do not need to worry that your solution is not exist in AWS.
.NET Support for Developer
Amazon and Microsoft are open platform cloud computing environment. Therefore, you will find the .NET solution cam be deployed there through IaaS or PaaS environment. However, if you want to develop the .NET solution that utilize the AWS services (i.e. S3) you can download
AWS Toolkit for Visual Studio. This is a tool that help you connect, manage, and consume the AWS infrastructure directly in your Visual Studio. You can download the toolkit for Visual Studio 2008, 2010, 2012, 2013, 2015, 2017, and 2019 here.
AWS Toolkit for Visual Studio Codes. If you are using Visual Studio Codes the AWS toolkit is ready for you. Just search the AWS toolkit and you will find the way
You can get see the getting started video here
Comparing the Cost between Azure and AWS
If your customer, ask you which one is better. You will be said that solution work great. In term of cost, both services are equal.
I am hosting a .NET solution in EC2 instance with 4GB RAM, 2 VCPU, and 100 GB HDD, and Windows. I will get
I am hosting a .NET solution in Azure VM with similar spec, I will get
You can compare between the solution by visiting:
Amazon AWS calculator
Azure Pricing Calculator
So which one do you choose? I recommend you play it around and decide. If your customer requests are AWS, it is a good time to install toolkit! See you next time!
medianet_width = "600";
medianet_height = "250";
medianet_crid = "858385152";
medianet_versionId = "3111299";
Whether you are using Microsoft Azure or using Amazon AWS, networking is fundamental aspect on how the cloud resources can communicate with each other. On this article, we want to show you the fundamental of virtual network management in the cloud. Although the sample will use Azure, it can be implemented in AWS. Let us get started!
VNET Peering
When you want to communicate between two different virtual networks can communicate each other. For example, you have two VM with separated virtual network. VNET Peering has some characteristics which are:
VNET peering can be done in same subscription, different region, or cross tenant (by using CLI)
VNET peering can't be overlapping IP Address
VNET is not transparent
VNET is limited to 100 VNET for one subscription
VNET can be transitive when connecting to Gateway or NVA
Network Interface
medianet_width = "600";
medianet_height = "250";
medianet_crid = "858385152";
medianet_versionId = "3111299";
Each cloud computing resource has one or more network interface. For example, a VM has one or more Network interface. Network interface can be defined as a main identity of the computing resources in cloud computing. Network interface characteristics are:
Network interface consists of public and private IP address
Network interface is part of subnet that created in VNET
Route table will help the network interface to communicate efficiently
NSG (Network Security Group)
Network security group will help the cloud computing resource secure their communication. NSG contains rule inbound or outbound of security rules.
Security rules are worked based on priority based. Lower mean higher priority.
There are inbound and outbound rules that can be applied differently. For example, you can block the port 80 for outbound, but allow the port 80 for inbound.
You can deploy a specific firewall to identify the port required and blocked for better NSG
VPN Gateway
VPN Gateway helps you to connect between cloud computing resources with the on-premise resources (private cloud).
VPN gateway is cost-effective version for connecting on-premise to cloud.
There is high performance connection such as Azure Express Route or AWS Direct Connect.
medianet_width = "600";
medianet_height = "250";
medianet_crid = "858385152";
medianet_versionId = "3111299";
The value of certification
Certification provides better preparation for us to face the real work situation. Certification also proves your capability to understand the topic. On this article, I will show you what you need to learn to pass SAA-C02. I failed once so this is my real experience to learn and to prepare the certification.
#1 Learn the Study Guide from Amazon
Download the study guide here. You can also see the exam question here. The full learning path can be seen here
medianet_width = "600";
medianet_height = "250";
medianet_crid = "858385152";
medianet_versionId = "3111299";
#2 Sharping your knowledge through video tutorial
Chad Smith, on Oreilly has a complete e-learning package you can join here
Linked Learning, on LinkedIn has learning path that you can join here
Pluralsight has a complete course to prepare the ACA here
Join for more than one course to prepare you better.
#3 Practicing and Practicing
Learn the knowledge by doing practicing test. You can join the practice at here and join AWS Academy at https://aws.training
Good luck for exam preparation.
medianet_width = "600";
medianet_height = "250";
medianet_crid = "858385152";
medianet_versionId = "3111299";
Building for cloud is different
Whether you are building for the Azure or for the AWS, you can see there are some difference between building the cloud solution and on-premises solution. There are three key differences when comparing cloud and on-premises which are:
Cloud is running in massive scale virtualization. Therefore, some of the key architecture such as cookie, session, and cache should be different between cloud and on-premises.
Cloud is providing platform tools. Cloud computing such as AWS or Azure is giving you some platform tools to more productive
Cloud is costly for some workload. Cloud computing is costly for some workloads. When comparing with the on-premises or conventional hosting, the cloud computing is costly for some workload configuration
medianet_width = "600";
medianet_height = "250";
medianet_crid = "858385152";
medianet_versionId = "3111299";
Based on that difference, we discuss three steps that you must do before building cloud solution.
Step 1. Learning the platform tools
After installing visual studio or visual studio codes you should download the platform tools for Azure or AWS.
For Azure, you can download and install Azure developments workload on Visual Studio Installer. You can download https://azure.microsoft.com/en-us/downloads/
For Aws, you can download The AWS toolkit https://aws.amazon.com/visualstudio/
Step 2. Start with the developer SKU
Both Azure and AWS has the developer SKU. It provides you better price for developer and testing purpose. Beside of that both platforms have 12 months free use for lightweight use.
For Azure, you have Dev Test Pricing. It clears enough to get started https://azure.microsoft.com/en-us/pricing/dev-test/
For AWS, you should register it first. You can get 70% reduced prices https://aws.amazon.com/pricing/?nc2=h_ql_pr_ln
Step 3. Learning the architecture for the Cloud
Next things that you can do is learning the recommended architecture in the cloud. By learning the recommended architecture, we can make sure that the proposed solution can be utilized and used for customer.
For Azure, you can read the cloud patterns by visiting https://docs.microsoft.com/en-us/azure/architecture/patterns/
For AWS, you can learn AWS well architecture format https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html
medianet_width = "600";
medianet_height = "250";
medianet_crid = "858385152";
medianet_versionId = "3111299";
If you have a customer who want to develop Microsoft based solution in the AWS platform, this article is for you. In this article we discuss several options that can make your Microsoft Based solution work as expected.
What Microsoft Based Solution that can be developed in AWS
Basically, AWS is a cloud computing platform. Therefore, you can use any available Microsoft platform to the AWS. Although Azure is the primary option for Microsoft solution, you can use Amazon Web Services for many of Microsoft based solution. The real question what the best AWS platform for Microsoft Based Solution?
Running Windows on AWS Platform
//
Windows Server, Windows 10, and Windows Based Hosting can be placed in Amazon EC2. It equals with Microsoft Virtual Machine. AWS claims that the Windows platform on AWS platform is faster, cheaper, and better. You can see their claim here. My suggestion is creating the EC2 instance on AWS and VM instance on Microsoft Azure. And please comment what you found!
Running SQL Server on AWS Platform
SQL Server can be hosted in two ways. First way is deployed on EC 2 instance, the second way is deployed through RDS platform. For better flexibility you can use EC2 since you can manage operating system and its configuration. RDS is great when you have less complexity on the database usage. Typical of web application with single database can utilize the RDS.
For easier deployment and management for simple process you can use RDS
For better flexibility you can use EC2 instance
Running Cloud App on AWS Platform
If you need to deploy your codes, you can use AWS Code Deploy. You can host your codes in Elastic Beanstalk. Elastic beanstalk works just like Azure Cloud App. Code Deploy works just like a portion of Azure DevOps. You can see how to do that in this link. Off course you can create the serverless function based on ,NET platform with AWS Lambda. Fortunately, the Amazon provides you a AWS Toolkit for Visual Studio to make you more productive. You can download the toolkit here
Running on Azure or AWS
I can say, we can deploy it to both platforms. You can host asp.net in AWS or Azure. The question is which perform better? Have an experience about that? You can share the result in the comments.
//