Software Development Engineer - Applications
Role details
Job location
Tech stack
Job description
APPLE INC has the following available in Austin, Texas. Deploy and maintain large scale distributed software systems on production. Design and develop fully automated scalable Continuous Integration (CI) and Continuous Deployment (CD) build/release systems. Automate CI/CD pipelines enable faster and efficient software release delivery. Design and maintain scalable and fault tolerant production serving infrastructure including storage systems, network, application architecture, and databases (DB). Manage production host clusters across multiple regions. Maintenance of all production Infrastructure including hardware or software upgrades. Employ knowledge of storage systems, network layer, application architecture, and DB for quick and accurate troubleshooting of large production system issues. Develop monitoring systems to proactively detect production issues due to infrastructure, new compliance or business features and enable quick recovery. Immediate triaging (within 15 minutes) for any P1 incidents which impact Apple Retail and Customers. Develop production operation tools which enable effective troubleshooting and identifying problems, involving monitoring tools such as Prometheus, Grafana, Splunk and dashboards/alerts on such tools. Conduct system performance tuning and design. Performance tuning to ensure applications are performing within defined SLAs. Perform capacity planning of production clusters scaled to organic growth and expansion. Confirm software and infrastructure is scaled out to meet need as traffic on applications grow with time. 40 hours/week.
Requirements
Master's degree or foreign equivalent in Information Systems, Computer Engineering, Computer Science or related field and 3 years of experience in the job offered or related occupation.
3 years of experience with each of the following skills is required:
Using Unix, Linux, and Shell Scripts to improve deployment infrastructure and processing.
Using Load Balancers, DNS, and Nginx.
Using SQL (e.g. Oracle or Postgres), NoSQL datastore (e.g. Couchbase or Cassandra), messaging (e.g. Kafka or RabbitMQ) and search technologies (e.g. Solr or Elastic Search).
Managing Configuration management using Ansible, Jenkins, and Git.
Large scale production monitoring, and troubleshooting as on-call support team.
Utilizing Docker, Jenkins, and GitOps principles for CI/CD implementation as well as Continuous Integration (CI) and Continuous Deployment (CD) system design and development.
Utilizing Web and REST for Micro services application architecture including Java and Tomcat.
Managing application deployments as well as maintaining infrastructure using cloud vendors such as AWS, GCP, or AliCloud.
Utilizing Kubernetes to execute brand new application stacks as well as lift and shift of existing cloud applications.