You are viewing a preview of this job. Log in or register to view more details about this job.

Undergraduate/Graduate Summer Intern: Method to Deliver Logs and Analytics to Clients, Including Exception Handling

The intern will be part of the NREL Cloud Operations Team (<10 members) which helps support and manage cloud computing infrastructure for researchers across the lab as well as external collaborators. The intern will work closely with a mentor from our team who will be generally available to offer technical support and guidance so the intern should not feel stuck or overwhelmed.

This position will focus on designing and implementing solutions to the open-ended problem of providing streamlined access of cloud application insights that we host to their respective developers. Our team will provide suggestions for potential solutions to serve as an initial objective to work towards, but we welcome and strongly encourage extended research into other solutions, products, and services so that we can provide the best and most thorough solution for our clients to empower them as much as possible in our environment.

Such insights include:

  • application process logs (server messages, authentication events, client connections, verbose details, etc.)
  • metrics (CPU/memory usage, queue depths, etc.)
  • diagnostics (execution exceptions, stack traces, etc.)
  • analytics (site traffic, concurrent users, trends, etc.)

Currently many developers have only minimal or no access to their application insights due to restrictions imposed by our cyber security team that harden our environment to threats and ultimately grant us permission to continue operating at the lab. For example, we cannot grant general SSH connection to our container servers which would enable interactive shell sessions within the containers running in our cloud enclave, but AWS has recently released a tool which provides this kind of access to containers that we haven't had the opportunity to implement.

The AWS service that we would focus on initially is AWS OpenSearch to aggregate logs and make them searchable, as well as the tool provided by AWS known as ECS Exec which would provide developers secure access into the containers they launch in our cloud environment so they can debug more efficiently in context.

Our team endorses and makes frequent use of "Infrastructure as Code" (IaC) source development kits (SDK) such as the Cloud Development Kit (CDK) provided by Amazon. We do not anticipate familiarity with these SDKs but the candidate should expect to be exposed to and ultimately provide their solution(s) as IaC in our team's repositories so the team may actively maintain and update their contributions.

Typical workday:

  • The candidate will perform any number of the following activities in a week:
  • The Cloud Operations Team adopts an Agile workflow for scheduling tasks, although it is not zealous. The candidate will commit to a handful of objectives (represented as "cards") every 2 weeks to create windows of focus on these objectives.
  • Attend daily stand-up meetings to briefly discuss progress on these objectives, and more importantly request assistance or ask questions if needed.
  • Survey and converse with application developers to research and understand what access, features, configurations, etc. they would like to have to improve their effectiveness and productivity in our environment.
  • Prototype services we (the Cloud Operations Team) already believe will bring a positive impact to application developers, but haven't yet had time to implement
  • Research AWS Services (of which there is a very large quantity and likely they do not have them comprehensively memorized) that could potentially be leveraged to address requests made by application developers
  • Prototype implementations of the aforementioned services and give demonstrations during the Cloud Operations Team's collaborative sessions to get feedback and consensus on the implementation(s). This should also include a code-review with the team.
  • Finalize prototypes into "production-ready" Infrastructure as Code so that it can be easily understood, recreated, modified, and expanded by other members of the team.
  • Document instructions for using these solutions, as well as diagraming the infrastructure used in the solution(s) and how it interacts.
  • Some light administrative overhead such as performance reviews, attending team meetings, shadowing and pair-programming with other cloud engineers on the team, etc.
.

Basic Qualifications

Must be enrolled as a full-time student in a Bachelor's, Master's or PhD degree program, or graduated in the past 12 months from an accredited institution. Internship period cannot exceed 12 months past graduation. Minimum of a 3.0 cumulative grade point average.

Please Note:
•You will need to upload official or unofficial school transcripts as part of the application process.
•If selected for position, a letter of recommendation will be required as part of the hiring process.
.

Additional Required Qualifications


  • Programming experience in Python and/or JavaScript (our Infrastructure as Code repositories are all overwhelmingly written in Python)
  • General familiarity with *nix operating systems, ideally including shell scripting
  • Git version control, and Gitflow workflows.
  • Ability to create technical and thorough documentation, as well as communicate technical details in general. This may include infrastructure diagrams, graphical UI markup guides, code blocks and code explanations, etc.
  • Familiarity with common network and application security principles (e.g. least-privileged access).

Preferred Qualifications
The ideal candidate will have existing knowledge of cloud services, typical cloud and web application architecture, and awareness of logging tools and services that can be leveraged to provide developer insight without compromising security, and/or eagerness to research these areas.

Preferred Qualifications/Skills:

  • Experience in public cloud, like AWS, GCP, and/or Azure, etc, with Console, CLI, SDKs, etc.
  • Familiarity with general cloud and web application ditesign principles, such databases, containers, queues, etc.
  • Application development experience which can be leveraged as intuition for what solutions, features, and access application developers would prefer to have in our environment to be successful