Cloud Computing is an exciting area to be in. If the company you’re with doesn’t have a strategy that includes it, the odds are it will soon, and it won’t necessarily be focused externally. Most organizations are approaching cloud computing as an extension to the data center in addition to exploring how to implement cloud computing within their data center. This means cloud computing offers myriad career options – from modern integration of Software as a Service with back-office systems to implementing and extending cloud management platforms like OpenStack to roll your own cloud.
The core focus of cloud in any form is rapid deployment of elastic (scalable) applications and thus we’ll spend time exploring concepts related to elasticity and scale, Infrastructure as a Service, Platform as a Service, and the tools and techniques used to implement and manage cloud computing environments.
So let’s get started.
Commonly Used Languages
When you scan the Open Source providers, you might think all development is done in Python or Ruby. The most common languages used are Java, Python, Ruby and C#. Of course, some use C/C++, PHP, Perl and Go and node.js is rapidly gaining attention, too. If you’re more interested in connecting up to Cloud Services via Web Services, then you can use almost any language you want, but you may have to “roll your own” API if the vendor has not created an API binding for your language of choice.
- OpenStack: IaaS oriented
- CloudStack: IasS oriented
- Cloud Foundry: PaaS oriented
- OpenShift: PaaS oriented
- OpenCompute: IaaS oriented
Open Source DevOps Tools
Cloud storage is usually the starting point. It has the lowest entry barrier as far as learning curve, and the cost is seemingly low. There are many different vendors out there with the most common being:
- Amazon S3
- Google Cloud Storage
- Microsoft Azure Cloud Storage
- AT&T Synaptic Cloud Storage
- RackSpace Cloud Files
Common Cloud Vendors (for Developers)
This is by no means a complete list. It’s simply a starting point to the many cloud oriented vendors/providers out there:
- Amazon Web Services
- Google App Engine
- Microsoft Windows Azure
- Rackspace Cloud
- AT&T Cloud (there are several projects going and this is one)
- VMWare (vCloud)
100 Percent Buzzword Compliant
The most important part of cloud computing is understanding all of its buzzwords and where and how they may apply. Hang on, there are a lot of them.
- Cloud Computing — Wikipedia’s definition of cloud computing is “the delivery of computing and storage capacity as a service to a heterogeneous community of end-recipients.” I look at it as a paradigm shift in the way we architect and build dynamically scalable systems where everything may soon become a service.
- CaaS: Compute as a Service.
- IaaS: Infrastructure as a Service.
- DaaS or DNSaaS: DNS as a Service.
- STaaS: Storage as a Service.
- PaaS: Platform as a Service.
- VaaS: Video as a Service.
- EaaS: Everything as a Service.
- SaaS: Software as a Service.
- SaaS: Security as a Service (I know, I just said it was Software as a Service but in a different context it can mean something else. Same applies to all of these “as a service” items).
- CDN: Content Delivery Network
- DNS: Domain Name Service (translates IPs into host names) — Critical to everything.
- CNAME: Canonical Name Record (used as an alias within DNS records).
- Caching: Holding on to “hot requests” for a period of time to aid in performance.
- Proxy: Used as a “gateway” for performance in systems that utilize caching. There are several types, like Reverse Proxies and Transparent Proxies.
- Memcache: In memory data cache sitting in front of web apps.
- Queues: A way of messaging or communicating between systems.
- Tasks: Typically a small discrete unit of work.
- Cron: Wonderful ole friend that allows you to schedule units of work.
- VIPs: Virtual IPs — used with Load Balancers.
- Load Balancer: Software/hardware versions that typically balance load requests to different servers via VIPs.
- Roles: Worker, Web, Service, etc., — more platform-specific, but not all platforms utilize roles in the way described here.
- Multitenancy: An architecture where a single instance can service multiple organizations and keep them completely separate.
- SQL: In this context, it refers to RDBMS like Oracle, SQL Server, MySQL etc.
- NoSQL: In this context, it refers to Data Stores that use name/value pairs to store data instead of traditional row/column formats like SQL databases.
- Vertical Scaling: Growing systems up, usually by adding more memory, capacity, etc.
- Horizontal Scaling: Growing systems out using lower cost commodity equipment where the “secret sauce” manages the growth transparently.
- Sharding: Used in horizontal scaling, it’s a technique mainly employed with SQL and NoSQL data.
- JBOD: Just a bunch of disks — a term used a lot in the cloud computing world to reference commodity hardware.
- Origin Pull: Term used in the CDN world where the source of an object may not reside on the actual CDN, so when a user requests the object via a webpage hosted on a CDN for acceleration, the CDN must go get the object from the origin to fill its cache.
- Replication: Depending on the vendor, plan, etc., data from the ingest point is copied to an alternate location.
- Geo Fencing: Usually using geographic location (latitude and longitude) of a given DNS server (if captured), or possibly information from the location service of mobile device to restrict access to or from a service. Most often used by CDNs.
- Geo Proximity Routing: Based on the geographic location of the DNS, the request is routed to the closest egress point.
- oAuth: Allows a user to grant a third-party limited permission to access a Web app on their behalf. Apps that interface with Facebook and Twitter are good examples of this.
- MapReduce: Model to distribute large data sets, process them and finally recombine them into a reduced result set.
- Web Service: Architecture to allow devices to communicate between themselves. It also acts as entry point into most Cloud offerings.
- RESTful: Representational state transfer — A way to architect communication to use standard HTTP protocol. Typically low-overhead.
- SOAP: Simple Object Access Protocol. A nice binding envelope that also uses HTTP and others, but is typically heavier than REST. Tip: Try not to use SOAP if you are using a mobile device. Use REST instead.
The Cloud Computing space is vast. There are so many career paths available, and new ones are being created as you read this. Understanding what it is and is not is the first step. And, as mentioned above, storage is usually a great place to begin.
I look forward to helping in any way possible. This is only the beginning.