Arnis: Evaluating cloud provider free tiers

This Saurday, I was looking cloud providers to host Arnis’s REST services. I believe that all providers are built on the same cloud principles and offers basic services for microservice hosting. So, my selection criteria are very simple: it must be reliable, easy to start with, and free as beer 😉 as I wish not to spend much personal money on it!

Based on this, I shortlisted 4.

  • AWS (market leader and very popular with OS community, an Amazon company)
  • Azure (popular with large enterprises like my employer, a Microsoft company)
  • Google Cloud Compute (its Google.)
  • Heroku (heard alot about it, a Salesforce company)

*** This is not a feature by feature comparison since each offers a unique package and spices. I noted only those that fits for my requirements.

Amazon Free Tier

Additional spices:

  • dynamodb nosqldb
    • 25gb storage -> this is niiiiice!!
    • free until full utilization
  • docker container register
    • 500mb/mont -> sweetness!
    • expires 12 months

Azure F1

  • *free forever
  • 60 CPU minutes/day – this is fine for low traffic sites
  • 10 applications
  • 1GB RAM, 1GB storage
  • requires credit card
  • no bill shock

Additional spices:

  • *free forever for students, professors and researchers via Dreamspark

Azure via Visual Studio Dev Essentials

  • expires 12 months
  • this Azure F1 + $25 monthly azure credit
  • plus++ lots of other stuff i don’t need
  • for new azure users
  • no bill shock

Google Cloud Compute

  • expires 2 months -> such a cheapskate huh!!!
  • $300 credit free
  • requires credit card
  • no bill shock

Heroku Free

  • *free forever
  • sleeps after 30mins of inactivity
  • usable only 18 hours (requires to sleep 6 hours/day)
  • 512 RAM

Additional spices:

  • 25MB Redis RAM, 20 connections -> this can be a deal breaker!

The Verdict

Three important leanings.

  1. There’s no such things as “free forever”, it’s should be “free for now”. These companies changes the scope of free over time, ex. Heroku’s free was limited and they now offers a “Hobby” tier for $7/month. And Google have to change their tier, because it’s just doesn’t make sense.
  2. I can get the best of everything by combining their Value Added Services (the spices). I can get my app hosted in Azure for unlimited time, take the AWS’s 25GB of NoSQL database and optimize later with Heroku’s Redis Cache!
  3. I have strong distrust of Amazon and it always push this option down. (It happens when Amazon Prime scam sneakingly charged me $79 without prior notice. It checks any card I have on my account and charge whatever if sees as possible money source! One, called this “cynical corporate rape”  and was banned by watchdog)

And Google? Told you, it’s non-sense offer 😀

So I started with Azure. Simply, I can get things done fast with Azure.
I decided based on my primary selection criteria + the leverage on my strengths in .NET + and gut feel.

 

Advertisements

Arnis: Choosing technology stack for building Arnis.Web

These recent early mornings, I have been digging around the right technology stack for building Arnis.Web. Btw, Arnis.Web would be the web based near-real time tracking of project dependencies using Arnis API. It’s basically, so you don’t have to look at notepad every time.

My primary selection criteria:

  • must be free as beer
  • open source, lovin it
  • cloud-compatible
  • easy to learn, i don’t have much time to dig everything
  • easy to provision, deploy fast, fail fast

Nice to haves:

  • friendly with Docker
  • possibly CI with Appveyor

General components would be:

  • nosql db
  • web api
  • web ui framwork
  • javascript framework
  • web server
  • cloud platform

After reading through,  I have shortlisted these alternatives. Check out later to see what  I ended up using.

  • nosql db (MongoDB, Redis)
  • web api (NodeJS, ASP.NET 5/Core)
  • web ui (ASP.NET MVC, Bootstrap)
  • javascript framework (angularJS, jQuery)
  • web server (NodeJS, Apache)
  • cloud platform (Azure Dev Essentials, AWS Free Tier)

Arnis: A no-brainer dependency tracker for .NET solutions

For for 10+ years of delivering software, I have attended these kind of questions many times?

  • What does it take migrate all projects into new Visual Studio IDE?
  • What are the different O/R mapping tools we used?
  • What mocking frameworks do we used in uni tests?
  • What open source tools did our company used? Legal would like to know!

In most cases I just have to do quick file search on branch folder, look at the project files, and at at some point I have written some dirty code to search. But not this time!! Not when we have to do this over 100+ solutions, with hundreds of projects and possibly thousands of dependencies. So while my wife was cooking, I have written a simple dependencies tracker of NET solutions. The project is available on GitHub as project Arnis.

Arnis is a no-brainer dependency tracker for .NET applications using elementary parsing algorithm.

At the moment, you can:

  • track applications built on Visual Studio from 2001 to 2015.
  • track target framework versions
  • track referenced assemblies from nuget packages and GAC/Referenced Assesmblies folder.
  • extensible to support new trackers and sinks.

How to use:

c:\arnis /wf:"<your_workspace_folder>" /sf:"<your_desired_csv_file>" /skf:<skip_these_folders>

Example (simple):

c:\arnis /wf:"c:\github\arnis" /sf:"c:\stackreport.arnis.csv"

Example (with skip file):

c:\arnis /wf:"c:\github\arnis" /sf:"c:\stackreport.arnis.csv" /skf:"c:\skip.txt"

where skip.txt contains
c:\github\arnis\bin\debug
c:\github\arnis.unittests\bin\debug

How it looks:

arnisresult

How it works:

Trackers scans your target workspace folder and perform analysis of solutions and projects. Then the tracker’s results are consolidated to form a dependency tree . Sinks saves the result into specific format or destination. Currently, only CSV file format is supported.

Disclaimer:

Arnis cannot guarantee 100% reliability. This is not runtime dependency tracer. If you need more sophisticated runtime analysis I recommend Dependency Walker, ILSPy, NDepend  or Reflector  tools.

Next steps:

  • support web projects
  • create webapi sink so i can do automated analysis and reporting

By consistently monitoring the technology stack in our solutions portfolio  we can better plan for component upgrades, monitor 3rd party usage and licenses, consolidate component versions, and strategize decommissioning of projects and tools.

I am very excited with this pet project 😉
Feel free to fork out, refactor or build new sinks.

Building an Enterprise .NET Applications Portfolio

At work, our main objectives in the .NET Architecture & Governance group is to manage risks and reduce the complexity  in the enterprise. We can achieve this thru due diligence, compliance, and informed decision making. To make an informed decision, we need to know where we are and what we currently have.

What we need is a comprehensive Application Portfolio (AP) where we can quickly get the application’s basic information, technology stack, architecture and operation attributes. An AP can be very useful:

  • When we need to estimate and kick-off a new project
  • When we need an internal reference architecture to serve as baseline architecture
  • When we need to tap an SME or experienced colleagues
  • When we need to roll out a critical release of components used in several applications
  • When we need to align applications according to Enterprise Architecture (EA) strategy
  • When a component or technology is threaten to be obsolete or unsupported like Silverlight or Flash
  • When we simply wanted to decommission apps because they became too costly to keep

Getting started
For start, we defined our roadmap:

  • Phase 1: Application Information.
    Captures the basic attributes of the solution.
  • Phase 2: Technology Stack
    Captures the entire dependency tree of the solutions such as platforms, data store, communication, security, testing practices, nuget packages, architecture styles.
  • Phase 3: Maturity Analysis
    Analyze the solution based of multiple lifecycle factors
  • Phase 4: Automation
    Research tool for easier accessibility of the AP, automating analysis and dependency tracking

For Phase 1, we defined the ff application’s Basic Information (I have excluded the aux fields).
This is just made in Excel Online document, shared across teams.

  • Common Name (CN)
  • Full Name (FN)
  • Description (DESC)
  • Business Area (BA)
  • Business Responsible (BR)
  • Technical Contacts (TC)
  • Product Owner (PO)
  • Scrum Team (ST)
  • Scrum Master (SM)
  • Lead Architect (LA)
  • Solution Architect (SA)
  • Release Manager (RM)
  • Infrastructure Delivery Manager (IDM)
  • Workspace (WS)
  • Source Code Location (SCL)
  • Solution Architecture Documentation (SAD)
  • Solution Infrastructure Documentation (SID)

Challenges

When we started in Oct 2015, we have 130+ applications in our portfolio and it can be challenge get a strong commitment from different teams to collect the right information. I must admit, it’s not the most exciting task to scour those docs, chase POs and SMEs on top of their tight deliveries. It’s also a task in itself to keep this updated when key persons leave the company.

Early benefits
We are so close to finish, and I hope to consolidate all teams into single AP this Q1 2016. We have seen early benefits when we have to answer where things are. We identified what solutions have not moved to new source code repository. We have identified solutions already decommissioned, those without any activity anymore, and those that didn’t reach production.

Next steps forward
Meanwhile, we have initiated the Phase 2: Technology Stack. I think this is the most exciting part! I am working Arnis: a no-brainer dependency tracker for .NET applications. Arnis is available on Github and appreciate your contribution 😉

I will document our journey in this blog and hope you share how you do this in your company too.

Azure permanently locks your profile to a country

This morning I almost ran into the same pit of creating a new subscription to my existing Azure profile where Denmark is the assigned country. I remember I had long discussion with Microsoft on this, but resistance is futile and in the end they just said it’s not possible to change country. This ridiculous restriction is by design. period.

azure

I would like to be billed from where credit card is issued, Malaysia. This would save me from FX difference. I am also afraid the prices are more expensive in other regions and I may have to pay Danish tax rates in the future.

What can we do then?
The only possible solution is to create a new Azure Profile with your desired country and create new subscription on it.

Support the discussions here:

I suggest you …

  • 62 votes
  • 7 comments

Allow me to change countries on my subscription.

 

 

 

IBM: Another loser in the cloud computing revolution

In a leaked information reported at IBTImes, IBM is reported to lay-off 111,000 staff this week and expected to leave by end of Feb 2016.  Well…

IBM lost its game on cloud computing. Ironically, this the same company that pioneered Mainframes and the same principles of the cloud of of centralized storage, governance and dumb terminals.

Meanwhile, wake up! If you are enterprise developer or an architect and haven’t had your hands dirty on cloud, lets this be a wake up call. Get that Azure, AWS and Google Compute account.

//back to coding

Reference:

Revisiting my WP theme

It’s been more than 10 years since this blog was created and I decided to revisit my WP theme… I feel nostalgic as I read my old posts especially my MicroISV experiences…

I am a person that love colorful things, I wear the same shirt of the same brand but of 5 different colors at work. But ironically, I also love minimalist designs and monochrome. In fact our apartment in Manila is just black and white, inspired by Scandinavian designs.

Ok, ok, I’m sticking with it for now 😉