Tech Bites

  • Uploaded by: Will Mworia
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Tech Bites as PDF for free.

More details

  • Words: 4,045
  • Pages: 12
Tech Bites By Wilfred Mworia

Contents The Power of Students .................................................................................................................................. 2 Concerns for a Connected Kenya .................................................................................................................. 3 Cloud Computing Series - The Cloud Platform.............................................................................................. 4 Cloud Computing Series – Attributes of the Cloud ....................................................................................... 7 Cloud Computing Series – AWS, GAE & Azure ............................................................................................ 10 Cloud Computing Series – Deep Dive into AzureTM .................................................................................... 12

The Power of Students Part of my work officially includes speaking to students who are learning technology in one form or another, be it Computer Science, IT, Software Engineering or anything of the sort. There’s a very special presentation I like making, it’s called ‘The Power of Students’. It’s interesting that some of the largest corporations today were started by students or at least young people under the age of 25. In technology we of course have Microsoft, Google, Apple, Yahoo, Facebook and tens of other start-ups that have made it big. There’s an interesting co-relation between academic institutions and companies in Silicon Valley. Many of the big corporations we talk about started as a student’s idea, students thinking out of the box, innovating actively and consistently. Let’s take a minute and look at the mindsets of students versus those of people who are already in the IT/Software industry. Anyone in industry of course knows that you just can’t do anything; you just can’t make any product. Similarly, you just can’t make every kind of product, or be in every market. Anyone who has worked in the software business either as an engineer or software developer, technical lead, program manager, or whatever other capacity knows the restrictions that exist in creating a software product. There are many decisions to be made, you have to use one technology instead of another because the client wants this or that; it’s not economical to do this or that; what skills do you have? What tools are available for the job? For the developer, Ruby on Rails looks cool and they just released the ASP.NET MVC framework, but then your manager claims it’s not a mature technology. ASP vs. ASP.NET vs. PHP vs. Ruby; or C# vs. Java; and at the end of the day you have to make a profit. Let’s now step into the student’s mind set. For the most part, a student can learn whatever, whenever. In fact that’s the job description of a student; to learn. So a student can decide to build an application simply out of curiosity, do the same app in three different languages to learn each. They don’t have to worry about cost or profitability; it’s not necessarily for sale. They don’t have to deal with restrictions imposed by a client, users or a manager. I believe in Kenya, and Africa by extension, we have students who are just as talented and just as smart as those in ‘the valley’, at Stanford or MIT or wherever else. So the question is what’s different? Why don’t we have a similar environment? Well, as far as I can tell the only difference is, firstly, motivation. David Heinemeier Hansson, the creator of Ruby on Rails in a presentation called motivation a silver bullet. And motivation comes from the creation of a conducive environment for the student to have opportunities to innovate, opportunities to learn and think outside the box, giving students the right tools, the right skills. After all, students change the world. It’s because of students that the computing industry is what it is today. And we in private and public corporations can do the world a favor by empowering students.

Concerns for a Connected Kenya Generally speaking, it’s fairly well known (and even more so within developer/techie circles) that the computing landscape in Kenya is about to change radically. This is as a result of the anticipated completion of the sub-marine fiber optic cable projects. However, it may be worth stopping to think a little deeper about some of the consequences of this. Obviously, we can expect, at least hopefully expect, the outsourcing industries to grow, creation of some industries or at least jump starting them, areas such as e-commerce and the like. But let’s take a step back and look at this scenario from another perspective. For the most part, on average, we currently have a net consumption of the internet. ‘Net Consumption’ here is simply a complex sounding that basically means that for the most part people are using internet resources that have been created by other individuals who are ‘out there’, not locally built services. So, we’re consuming a lot of Facebook, Yahoo, Gmail and a lot of other services. There’s nothing particularly wrong with these services and they are great services that provide good service. However, the risk is that simply having more bandwidth may not necessarily mean that we will have a ‘Net Production’ of internet services built locally. In fact, I think there’s a significant risk that more bandwidth may end up meaning that we have an even larger net consumption. I had the opportunity once, of working within a local software engineering outsourcing firm. It was a great experience but of course the key challenge was simply the fact that with literally 100% of our clients in the US, Australia or New Zealand and having to deploy our applications in these areas, internet costs were just insanely high and we constantly had to grapple with the cost of having a not-so-good internet connection. Of course, this is exactly the problem that the fiber connectivity is aimed at solving. However, the really cool thing about this company is that, once the fiber projects are completed and connectivity costs fall, their mindset will be something like, ‘Hey, we can now continue (note the emphasis) doing what we’ve always done, only now we can do it more efficiently ’; they already have a solid portfolio of clients, they have a track record, now they can deliver even better service. I think this shift of mentality is a simpler transition as opposed to, ‘Oh boy, now we have cheap internet. Let’s start…’ That could still work, but I believe the sooner all the developers and software companies out there start, the better. If you’re going to build a software product, create a website, whatever, start now; suffer the cost for the time being and I bet it will be easier for you moving into the next era.

Cloud Computing Series - The Cloud Platform Any IT/software enthusiast or professional knows all too well that ours is an industry filled with jargon: SOA, SOAP, Web Services, identity federation, SaaS, S+S. Every major revolution in software comes with its own jargon and many terms to learn and understand, interesting acronyms and terms coined to describe various things. Well, the last few years have seen what you might call a ‘platform revolution’. The three primary platforms that we know and are accustomed to are basically the Desktop Platform, Mobile Platform and Web Platform. By and large, most applications running today will be running on either of these platforms. And each has various considerations to be thought about when architecting applications for the respective platform. For instance, on the mobile platform some design considerations include memory limitations, screen size, the fact that the user can only view one screen at a time and more. A few years back a new platform emerged, the Cloud Platform. Today it appears that this platform is a critical investment area moving into the future with major technology companies such as Microsoft, Amazon and Google making investments on this platform. If you are familiar with Amazon Web Services or Google App Engine or Microsoft’s Windows Azure platforms you probably are aware of what’s going on in the Cloud Computing space. So what’s this Cloud Platform? Here’s an extreme analogy. Suppose you were an application developer and your manager asked you to build an application, say a payroll application for the enterprise. Now imagine that in order to do this you would go out, by a machine, buy a hard disk and other physical infrastructure, then because you need something to manage the running of the application in terms of managing what memory it would use, assigning space for it to run on the system you had to go out and write code for that. Then something happened and the hard disk crashes, then you have to go back and buy a new one and perhaps buy more than one just in case so you don’t have to travel back to buy another one in case the one you bought fails… Three months later and your manager comes to check how far you’ve gone with the application development and finds you have not gone far because of all the other stuff you’ve been doing. And maybe another 6 months later and you finally finish that app but then the company has expanded and hired a hundred new employees but you can only support the original 200 so you now have to worry about scaling then after that replication, back-ups…! This is an extreme analogy but in reality, in order to run an IT shop in an enterprise and support enterprise scale applications the same sort of thing is played out all the time and run, a lot of effort goes into getting the servers, racks, networking equipment, wiring up the whole physical infrastructure, installing Operating Systems, installing services, installing the actual applications, securing the entire infrastructure and not to mention the ongoing administrative effort, phew! All this is done by the IT department, application developers, administrators and other IT staff within the enterprise. The Cloud Platform seeks to resolve the issues with this scenario. If you look at it, a lot of what I’ve described above is generalizable, in other words, all, or most IT departments will do the exact same

things over and over again – setting up machines, networking them… - regardless of what kind of organization it is or even what applications they will be running. With the Cloud Platform, someone who has the capacity takes all this repetitive work you or your staff does all the time and manages all that and presents you with an interface to that system so that you can write applications to run on his infrastructure while this ‘someone’ guarantees the flawless running of your application, it’s security etc. Well, you might say, ‘That doesn’t sound any different from hosting my applications with a third party’. Well it’s very different. Typically we are familiar with the following models for running applications: 1) On-Premises Model – You run your applications on your own infrastructure and manage everything yourself; 2) The Hosted Applications Model – A third party hosts the application for you and you simply run it, SAP and Oracle are doing a this by hosting some of their applications and clients running those off of their infrastructure. The third model is tied to what the Cloud Platform offers. This model is actually very interesting as it provides several different options for your application that we will look at in a subsequent article to this one. Here’s a diagram to illustrate this:

‘You’ here represents your company. ‘We’ refers to the company offering a platform you can leverage on the cloud e.g. Microsoft, Amazon, Google. – Image taken from a presentation by David Chou, Microsoft

However, the point I’d like to make in regards to the difference between this and the Hosted Applications Model is the fact that the Cloud Platform actually presents a distributed, replicated, elastic, inifi-scale platform! We’ll look at these attributes in a subsequent article as well. In addition to this, there are 3 fundamental services typical to the Cloud Platform: 1) Storage, 2) Compute and 3) Message Queuing, we’ll look at these when we look at some of the Cloud Platforms out there. This article has basically introduced the Cloud Platform and sort of put it in context with other platforms and models for computing. In this series we will continue to look at: the attributes of the cloud platform – what makes this platform special and a look at why the Cloud Platform is relevant to Kenya and East Africa by extension; the different cloud computing offerings out there Amazon Web Services, Google’s App Engine and Microsoft’s Windows Azure; A deep dive into Windows Azure and the Azure Services

Platform; setting up a development environment for Windows Azure Development and finally we’ll write a simple application for the cloud on the Windows Azure platform.

Cloud Computing Series – Attributes of the Cloud Previously we looked at the Cloud Platform and placed it in context with other computing platforms and models. This time around I’d like to take us a bit further to look at the attributes of the Cloud, essentially what makes this platform special and why it is that it is viewed as the computing platform of the future. I will also try and make the Cloud relevant to us in Kenya and by extension Eastern Africa. In the first article in this series we saw that the Cloud Platform presents a new model for computing which we contrasted with the On-Premises model and the Hosted Application Model. One of the key questions that emerged is, what makes the Cloud Platform fundamentally different from the Hosted Applications Model? Especially since with both your applications are running on third-party infrastructure and you are accessing them via the ‘cloud’ i.e. the Internet. I answered this by stating that the Cloud Platform presents a distributed, replicated, elastic, inifi-scale platform. But what exactly does this mean? Well, here’s what I consider the key attributes characteristic of the Cloud Platform: 1. 2. 3. 4. 5. 6. 7.

Massively Distributed Replicated Infini-scale Elastic Manageable Cheap, yes cheap. Great developer support and experience

Of course, this is not an exhaustive list and there are several other attributes you may consider, but I am considering, for the purpose of this article, these to be the key attributes. Now, in order to explain these, I will tell a partly-fictional story; It is clear that Amazon were the first major players in the Cloud Computing arena, at least, the first to offer a comprehensive offering in terms of an entire ecosystem of services on the cloud that could be leveraged by applications developers all over. Here’s how I imagine they came to decide to do this. Some of you may have been stunned by the fact that we are talking about Amazon in regards to Cloud Computing, I mean, ‘Wait a minute, I thought Amazon were the online book retailing store? Or is it another Amazon???’. Well, it’s the one and the same online books et al retailer. Well, Amazon has been there since before the great Dot Com Bust, and they are one of the companies that actually survived the bust and have continued to do well ever since. Well, they started off selling books online, and then as time went on they added more items to the site and are retailing a lot more now. If you remember the last article in this series, you might expect that they did a lot of that stuff – buying machines, setting up data-centers, networking… - and yes, they did. In fact since their site was so popular and they were selling so much, they ended up with massive data centers. Someday fairly recently some guy woke up and thought, ‘Hey! Why we have a very well architected infrastructure, it can support a lot more that we are currently using it for, and possibly a lot

more if we optimize it... hmm, what if we can offer a platform for other applications developers to create and run their apps that has virtually unlimited storage, virtually unlimited storage and scales up and down really easily? – Oh, and we could charge them for it, really cheap but we would do it at such scale and volume that we would still be able to make money’. Then they sent some geeks into a room to build what we now know as Amazon Web Services. This little story illustrates all of the key attributes of the Cloud Platform: 1) Massively Distributes – A Cloud Computing is massively distributed. We’re talking of tens to hundreds of thousands machines here. Typically they are commodity machines running in a distributed environment. Which leads us to the next attribute, 2) Replicated - Data, and even software code, as we will later see when we look at the Windows Azure Platform, is replicated across multiple machines, multiple instances of your code on this platform all managed in a single distributed environment 3) Infini-scale – You can start your application on 10 machines and if demand goes up you can instantly increase the number of machines running your application to 100 or more and potentially this can be done ‘infinitely’ – in other words regardless of what resources others are using on the same platform you can scale out your application to as many machines as you want at the press of a button. Which leads us to the next attribute, 4) Elastic – not only can you scale up, but you can also scale down automatically. You can move from 10 to 100 instances of your applications and just as easily come from 100 to 10 depending on the needs of your application at any given time 5) Manageable – And not just manageable, but very easily manageable. For example having a very simple interface exposed for you to place your application on the platform, run it, monitor it, modify it (which we will see is implemented in a very interesting way on the Azure Platform, you can kiss down time when upgrading applications goodbye!) 6) Cheap – This is commonly called the Utility Model for billing. You only pay for what you use. E.g. you can run your application for as little as 10 cents per server hour. Significantly reducing cost. 7) Great developer experience and support – Finally and perhaps most importantly to developers out there such as myself, all this would be worthless without a very easy and enjoyable way for developers to write applications for the cloud (and personally speaking this is the number one aspect about Azure that I simply love) So finally, how does this play out with regard to we developers in Kenya, East Africa and Africa in general? Well, if you’ve read Friedman’s ‘The World is flat’, you can guess what the cloud platform potentially means for us. Quite simply, a commoditized development platform; what I mean by this is simply the fact that there now exists a platform that is so cheap to get on, and yet so powerful that I think we can do great things. Especially thinking of what we could do with the great internet speeds promised by the fiber optic marine cable projects. But even without that high speed internet connectivity it’s so simple to use this cloud platform. It’s so easy to get started and write great apps for this platform. My emphasis on the ‘potentially’ is due to some concerns I stated in an article titled ‘Concerns for a Connected Kenya’ – go search for it 

Next time we look at the 3 main cloud platform offerings out there: Amazon Web Services, Google App Engine and most interesting, the Azure Platform, which we shall dig deep into in subsequent articles.

Cloud Computing Series – AWS, GAE & Azure So far we have looked at Cloud Computing in general and we’ve considered the key attributes of this platform. Now we’ll go ahead and look what you might consider the three main contenders in the Cloud Computing space. Microsoft, Amazon and Google have all staked a claim on the Cloud Platform by offering a platform which can be leveraged by developers all over the world. First off: Amazon Web Services (AWS). As previously stated, Amazon were probably the first to build a platform on the Cloud in the form of what we call AWS. When Amazon considered building AWS, the key things they wanted to achieve were: 1. 2. 3. 4.

Virtually unlimited storage space Virtually unlimited compute power Utility based computing – pay as you go model Scalability by design – Easily scale out, scale down

AWS is basically a set of services running on Amazon’s infrastructure that are exposed to developers through Application Programming Interfaces (APIs) such that developers can make use of Amazon’s infrastructure to (primarily) store data and run applications. The primary AWS services include: 1. 2. 3. 4.

Amazon Elastic Compute Cloud (EC2) Amazon SimpleDB Amazon Simple Storage Service (S3) Amazon Simple Queue Service (Amazon SQS)

For the purposes of this article we will only consider EC2 and S3 which are perhaps the most used services on AWS. EC2 is basically compute power, in a sense, think of it as having a machine/PC somewhere. This is not necessarily a physical machine but it could be a virtual machine and there could be multiple VMs running on a single physical server. An application developer creates an application and loads in onto an EC2 instance where it runs from. A cool feature of EC2 is the ability to create images; these are simply pre-defined OS and machine configurations which you can select and EC2 will go and create and instance based on the specifications in the image. There are some images that are created and suggested by Amazon that are more or less what would generally be used in a typical situation. However, individuals can create their own images. S3 is fast, reliable storage. Data is stored as objects in that Amazon calls, ‘buckets’. S3 provides fast data access and transfer for the objects. Each object is uniquely addressed. AWS is fairly easy to use, you can control your server instances, create storage buckets and store objects in those buckets using a set of APIs – typically REST or SOAP. They also have a set of command line tools that a developer can use. Using these is also pretty simple; the only complications being that you have to create a private-public key pair to make sure your API calls are secured. There are offerings on the web which offer a better user front end experience by creating a web based interface to AWS. These include RightScale (www.rightscale.com)

Moving on swiftly to Google’s App Engine (GAP); GAP lets you run your web application on Google’s infrastructure. It’s a shared hosting environment and applications can only be written in Python. The applications are built around the Django framework. You can think of Django sort of as the Rails of Python. GAP makes it easy to develop and deploy web applications based on Django. Django itself makes writing Python apps very simple. The back end stuff is taken care of by Google, the developer primarily has the task of developing and deploying their application. One of the cool things Google brought to the table with the App Engine is the fact that you can download a form of ‘runtime’ that simulates the GAP environment on your desktop so that you can create applications with a first-hand feel of how your application will run once it’s actually deployed in the App Engine. However, there are a number of restrictions on the App Engine such as the fact that only pure Python modules are supported and App Engine can only execute code called from a HTTP request. And finally we come to Microsoft’s Windows Azure Platform. Microsoft announced the Azure Platform at the 2008 Professional Developer’s Conference (PDC). So they are the most recent entrants in this game. Microsoft’s Azure ‘is an internet-scale service-based application platform hosted in Microsoft data centers. Azure includes compute, storage, and application services, all available as elastic resources, and all accessible via standard communication protocols and models. ’ Now I cannot possibly break down all of Azure in what is left of this article. Since we are going to take a deep dive into Azure in the next article, I will simply handle all that in the next article… so for now just hold on to your hat and get ready for probably the most interesting part in this series next time.

Cloud Computing Series – Deep Dive into AzureTM

Related Documents

Tech Bites
May 2020 3
Small Bites Issue 6
August 2019 12
Tech
October 2019 67
Love Totally Bites
October 2019 9

More Documents from "kagaral"