What is a "Cloud Application Operator" (AppOps) aka Site/Service Reliability Engineer aka Cloud Appliication Engineer.
Defining 'AppOpps'
First let's define 'cloud apps'. 'Cloud applications' are apps which operate in a datacente; as opposed to, apps on your mobile phone or laptop. 'Cloud apps' are application which a general cosumer would access via 'online applications', i.e. via your browser, through apps on your phone/tablet, via SMS and/or any other 'Internet connected device' which requires access to 'timely data' and/or 'big data'. Example of well known cloud apps would include: Uber, Pokeman, Twitter/Facebook, CandyCrush... Also worth noting are the portals which host these applications, so called "Cloud Applications Platforms" (AKA PaaS, also known as CaaS), which are emerging in the form of Google Drive Apps (aka Google Suite), Salesforce Apps, Apple iCloud, Microsoft365, etc. Last but not least are the increasing number of 'Container application platforms' aka CaaS (Container as a Service), e.g. Kubernetes, OpenShift, Mesos DC/OS, Docker Swarm, Cloudify, Spinnaker, etc.
What then is 'AppOps'? Let's begin with their 'high level' obligations (remit) to their employers, which is a simple measurable set of formulas to demonstrate efficiency (as defined by engineering).
From Wikipedia: "efficiency is measured as the ratio of useful output to total input, which can be expressed with the mathematical formula r=P/C, where P is the amount of useful output ("product") produced per the amount C ("cost") of resources consumed.
Aim: Demonstrably advance how a company producing 'cloud apps' are optimising their human and machine workers for shared cost effectiveness via the engineering measures of producitvity and efficieny gains.
Objectives:
- specialise in the architectural engineering of applications for use accross multiple cloud platforms, for the purpose of cost effective effciency.
- know the architectural cloud application patterns which enable a 'cloud apps' to grow its 'user base' for the purpose of consumer integration efficiency.
- enable the..... for the purpose of customer ease, ergo productivty.
- bla bla...... for..... networking engineering,
- ......grow the producitvity of the 'cloud app' as it expands via load, geography, size and shape.
``Timelyness, An AppEng is brought into the development team, post inception of the customer strategy having been established.
- Above all else, AppEng are efficient (and a bit lazy ;)
--> third gaph of what an application engineer should achieve...``
Which kinds of companies want to hire an 'AppEng' in the real world, right now? Job Applications with the title of "AppOps" or "SRE" or "Application Engineer" have appeared from:
- Intel (Q1 & Q2 2016)
- YouTube (Q1 2016)
- Cisco (Q2 2016)
- Hewlett Packard (Q3 2016)
- IBM (Q3 2016)
Below you'll find wording which I've adapted from real job descriptions as per the above list of companies. Please copy and paste this wording as you see fit, it is licensed under a creative-commons-zero license.
- The primary aim of Application Engineer at our company/institution will be to scale up our most popular applications so that they are more efficient, thereby resulting in greater productivity of our most significant asset: the collective intelligence of the company both humans and machines. Accordingly, the AppEng will continually have (and further seek out) the following skillsets as part of their job (which is one of continous learning):...
- Our software engineers work with Cloud Service Providers (e.g. search engine, social network and e-commerce providers) to optimize software stacks for our company and its customers. AppEng contribute to the corporate mission by: a.) helping define what the future platform looks like for our staff and customers, b.) assist with competitive platform comparison and characterization to help define our applications efficiencies, c.) regular configure and execute workload performance characterization experiments with a team of developers, including: "Network Engineers, System Adminstrators, Developer Operations, Application Devleopers, Usability Experts, etc., and d.) AppEng will be measured by their ability to define and show engineering efficiencies which will directly benefit the users increased productivity.
- Responsibility for 'productivity efficiencies' will include: software optimization, power optimization, performance and efficiency analysis, configuration of performance analysis infrastructure, customer-facing collaboration, training and support, usability+behavioural testing efficiencies and the identification of best practices to be used in the creation of collateral and case studies to define efficiency.
- Other responsibilities include customer and internal communication (written and verbal), and working across multiple organizations to define and enable solutions in both customer and internal environments. Will be a sincere advocate for our technologies with customers; and vice versa, for customers' needs and viewpoints with all other company developers/engineers.
- The successful candidate will be highly self-motivated, able to take initiative to resolve problems individually and in teams, and able to see projects to completion with minimal supervision.
AppEng should have a minimum of N+ demonstratable skills (and/or certifications) from each of the below categories:
Network Engineering, Systems Adminstrations, Developer Operations:
-
Certified OpenStack Adminstrator
-
Demonstrable skills and experience in 2+ Cloud Operating Systems
-
RedHat Server Certification
-
Cisco Networking Certification
-
Service Defined Networking and/or Network
-
Certification (and or demonstrable skills) in hypervisors, i.e. Xen, KVM, etc.
-
Certiciation (and or demonstrable skills) in Vitual Machines
-
Continous Integration...
-
Good understanding of server architecture and platforms features (compute, storage, and network)
-
Familiarity with server BIOS and Firmware
-
Experience with network and topologies, managed runtime services
-
Familiarity with system power management and power measurement techniques.
Applicaiton Engineering (combining the skills of above and below to achieve operational efficiencies and demosntrable user productivity):
- Data analysis
- Demonstrated competency and enthusiasm for application performance, characterization, and optimization, including the ability to design and execute performance characterization experiments.
Application Development, Usability Expertise, Behaviourial / Unit Testing:
- Familiarity with databases (both relational and NoSQL), data analytics tools, and machine learning implementations.
- Familiarity with a Linux internals and software development environment, including strong debugging skills.
- Enthusiasm for interacting with and publishing using Social Networking tools (blogs, wikis, online communities, etc.)
AppEng should have N+ of the following foundations in their education, as demonstrated through their Higher Education and/or Demosntrable experience. Evidence must be provided for each educational foundation checked:
- Master's or PhD in Computer Science or related engineering field.
- 5 years experience or equivalent in parallel and distributed programming models with a strong understanding of scalability and concurrency concepts.
- 5 years experience or equivalent in C/C++ software development and deployment on Linux.
- 5 years experience or equivalent with one or more interpreted languages such as Java, PHP, Python, or PERL.
- Bachelor's (undergraduate)degree, Master's (graduate)degree, or Ph.D. (post-graduate) degree in engineering discipline or equivalent experience (Computer Science or Computer Engineering or Electrical/Computer Engineering).
- Minimum 8 or more years of related work experience, including at least 2 years of networking or network application software development experience'
Programming experience in one or more of following languages: Go lang, Python, C/C++ Knowledge of Enterprise Networking – L2 / L3 protocols Experience with web-servers such as Nginx and web-technologies such as REST services, data binding, JSON, XML, WebSockets, etc. Strong software architecture and design skills Embedded software development experience is a plus Knowledge of control plane and management protocols such as SNMP, Openflow, sFlow, NetConf, etc. is a plus Experience with full software development lifecycles, processes and best practices Knowledge of modern software DevOps tools and processes such as Git, Gerrit, Jenkins, Chef, Puppet, etc. Logical problem-solving skills Demonstrated technical leadership and people skills Ability to communicate clearly – both written and verbal communication Ability to coach and mentor junior engineers Ability to develop and maintain partnerships with those outside one's own work group
Intermediate experience with SQL, data analysis and manipulation skills Good knowledge of C#, ASP.NET, HTML, Java Good understanding of Windows operating systems and active directory Ability to work under minimal supervision Self-motivated with the ability to analyze issues and prioritize proactively Must be able to support off-hours on-call Strong problem solving & troubleshooting skills including ability to perform root cause analysis for preventative analysis Comprehensive verbal and written communication skills Strong organizational skills and the ability to manage a diversified workload. Knowledgeable in Microsoft Visio/PowerPoint to effectively document and maintain system documentation. Demonstrated ability to communicate & work effectively with all levels of Operations, Engineering, Client Services, and senior management.
Key Responsibilities Day-to-Day:
-
Provide architecture and design leadership to a team of software engineers developing campus and branch networking applications for next-gen Network Operating System (NOS)
-
Review and understand customer solution and business requirements and translate them into product/solution technical requirements for the consumption of the software engineers Develop architecture and detailed low-level designs suite based on detailed requirements. Design, develop, and test highly available, scalable, and distributed software systems Utilize the latest industry standard design & implementation tools and frameworks to develop and test world-class software Comfortable working in a fast moving agile and DevOps based dynamic product development environment Benchmark applications and services performance and design scalable and performant systems and APIs Collaborates and communicates with management, internal, and other development partners regarding software systems design status, project progress, and issue resolution. Document and publish requirement, design and functional specifications for use by internal teams Support HPE program/project managers and account leadership during technical design sessions, demo’s, and other meetings with the customer as needed
-
Provide the highest quality of technical support in identifying and resolving problems for partners, clients and internal staff in line with Company s Service Level Policy
-
Identify the appropriate process for each problem resolution
-
Share experience and knowledge of problem resolution with other staff members (including international staff) and to assist in creating a knowledge Base for Company s online products
-
Take ownership for all outstanding customer queries from the time Technical Support are contacted until escalation, or the resolution is provided for the customer
-
Customer centric communication, enables informed decision making within the team
-
Develop and maintain a well-coordinated internal relationship with key decision makers and with the wider organization
-
Maintain SLAs and participate in the on-call rotation.
Please ignore, notes to self...
Below is a pending draft blog post by Flanders and are his views alone ;-) Really, these are just a series of 'observances' which I've been tracking to see if there is merrit in this observed pattern? /dff
On a person note:
- The primary problem the "cloud sector" is currently facing is that is has no discernable collection of 'cloud applications' to emerge panopticon. And yes, I'm alluding to something like the 'Android Marketplace' or 'iPhone store' as a kind of 'plug and play' consumer facing repository. Indeed, most of these apps will be for coporate enterprises, however a degree of centralisation and/or interoperability need to emerge before we'll see the customers, employees and end-users of these coporations satisfied with the app toolsets which they can implement to run their projects and teams. Above all else, it is the enterprise which will be the ones to pay for cost of application development (as the 'app stores' have proven to be little else other than an in-efficient tithe platforms for humble developers).
- The world will look back on this time in our human/robot era and mock us for the state of technology. The irony: it is companies who are paying a fortune for technology, and yet the enterprise application on offer are worse than the free tools which we all have in our personal lives.
- How is it that the data driven industries in which we all work are allowing the primary resource (our productivity to be continually hindered and angered through the continual impediment which is enterprise applications).
I find anti-patterns can be helpful in comparison to other jobs of similar type. While 'Cloud Application Engineers' will share skills with all of the following "developers" in the stack, they differ via the following key skillsets:
- How is an AppEng unlike an NetEng ≠ An Enng Eng (while continually conversive with the NetEng for guidance) does not know the details of the network stack (IPV layers), other than in regards to
- How is an AppEng unlike a SysAdmin ≠ An AppEng (while understanding the basics of server configuration and performance, and always eager to learn more from an experienced SysAdmin), cannot assure the uptime of servers ("number of nines") nor their lifecycle maitenance and fault tollerant mechanical performance over time.
- How is an AppEng unlike a DevOpps ≠ AppEng do not care about dozens or hundreds of applications, they care about a few applications (less than 5 cloud apps at any given time).
- How is an AppEng unlike an AppDev ≠ AppEng do not invent software, they are not involved in the business of "start-ups" where an idea is invented and then brought to life as a product and business.
- How is an AppEng unlike a UXer ≠ AppEng do not have the usability testing methods or behaviour unit testing toolboxes which a UXer will employ in their day to day.
Above all, the primary feedback loop which an AppEng achieves is to get the advice of these other experts on their teams.
DISCLAIMER: Please note, the above is not intended to pigeon-hole developers into any single role, rather it is expected that many devleopers will occupy these roles and skillsets at different times in their carreer (it's an AND not an OR). Some developers might even be a kind of 'unicorn' capable of acting like a 'full stack developer' in several of these skill areas. Warning: 'unicorn full stack developers' do not usually play nice with teams, and a team is what you need if you want to build a cloud app.
- The industry goal of AI while
- Remember that for every 1% decrease in the global human workforce (an N% increase in the robot workforce) there are forty-thousand deaths. Waxing lyrical on this data, if self-driving cars come into existence and start to replace the transportation industry (taxis, deliveries, shipments, etc) this could potentially have a devastating impact on our industry.