We are working within the whole Software Development Life Cycle process starting from VCS and up to production deployment
We've different projects:
- Development, where we implement build process including build framework configuration using Maven, Gradle, FASTBuild, premake, etc. as well as test run automated configuration, development and production environment deployment, configuration and maintenance.
- Infrastructure Management - bare-metal, cloud environments and hybrid of course.
Among other things we have shared infrastructure services between our projects across 3 branches and managed by our division. We have a virtualization cluster which contains GPU-optimized hardware for game assets builds, lightning and object physics calculation besides high-performance regular calculation nodes. KVM is the heart of our cluster managed by oVirt.
Our infrastructure services catalog contains both vital for SDLC services like build scheduler Jenkins, binary artifacts management Sonatype Nexus, C/CPP dependency management system Conan, Static Code analysis tool Sonarqube and infrastructure configuration management SaltStack, Zabbix monitoring services, log management by ELK Stack, build slaves Docker Swarm cluster and old-school PXE of course=)
All infrastructure services managed by SaltStack Formulas which we have more than 100 starting from NGINX and up to very project-specific services like Kurento Media server, OpenVAS. We've well-formed security techniques using SELinux, local firewalling, port-knocking and socket activation techniques, Intrusion Detection Systems, penetration and out-of-service testing, etc.
Infrastructure configurations has their own release cycle contains development, pull-request review, integration testing for two major platforms CentOS/Debian at least, versioning, binary artifact packaging and finally deployment into production environment. Well-formed release cycle helps us to catch configuration bugs at earlier stage.
You'll learn not only development and production lines administration and maintenance, private and public cloud infrastructure management on major platforms like AWS and Azure, SDLC process establishment from scratch, distributed build process techniques, build frameworks configuration for C/CPP, C#, Java, JS/TS, PHP, but not limited by this list, languages as well as participate in formation/refactoring of project architecture.
Since our division established as service you wouldn't work only with one but with all projects.
Linux/Windows operating systems configuration
- Logging system configuration and usage - local and remote log servers and services
- Local user management
- Local performance monitoring tools
- Linux init systems:
- sysv - service configuration, run levels and differences between them
- systemd - service, timer, mount, network, unit templates
- High-Availability Clustering/Load balancing - Techniques, configuration and maintenance
- Clustered file systems
- Distributed file systems/storages
- Kernel tuning - Keepalive timeouts, tcp frame size, max socket connection, raid tuning, swap tuning
- TCP/IP stack
- Basic performance adjustment switches
- Network File Systems - Basic configuration and maintenance
- Application security - applicability, configuration, troubleshooting
- SELinux - Incident auditing, troubleshooting
- Centralized user management
- Integration with AD
- MFA integration for auth services
- CIS compliance configuration
- Static routing(weighted routing, asymmetric routing)
- Failover Networks
- Dynamic routing (OSPF, BGP, EIGRP)
- Failover configuration
- Balancing (Latency-based, geo-based)
- Virtualization types - Technology applicability aspects and differences
- OS-level virtualization
- KVM/Xen/Hyper-V/VMWare - fault-tolerant configuration, maintenance
- OpenVZ/LXC/LXD/Docker - fault-tolerant configuration, maintenance
- NAS and SAN - differences applicability, vendor agnostic configuration.
- SCSI over FC HBA
Cloud platforms - Fault-tolerant configuration, maintenance
HTTP server configuration(Nginx/Apache HTTPd/Lighttpd)
- Basic installation
- Virtual hosts management
- Log management
- Balancing - types, algorithms
Relational DB management systems configuration(MySQL/MariaDB/PostgreSQL)
- Basic installation
- Client configuration
- DB and Table creation
- Users and privileges management
- Clustered configuration(Master/Slave, Master/Master)
- Redis - Clustered installation, high-load tuning
- Cassandra - Architecture, configuration, maintenance
- Formulas/Playbooks writing, debugging
- Distributed environment configuration
- Cloud provisioning tools for private/public clouds
- Zabbix/Nagios/Cacti/etc. Fault-tolerant monitoring configuration.
Version Control Systems
- Git/SVN/Perforce - server management, maintenance, configuration
- Software Development Lifecycle - Process outlines, requirements, document flows, best practices
- Project task tracking
- Code-review process
- Static analysis
- Build schedulers
- Artifact management
- Source code management
- Project versioning process - differences and applicability of versioning techniques.
- Application build process outlines - Software compilation process understanding (Java/C/C++/C#)
- Build frameworks - Read, write and maintain build descriptors
- Apache Ant
- Apache Maven
- Native packaging for one platform CentOS or Debian at least
- Build schedulers - Jenkins/CICD/TeamCity/Bitbucket Pipelines
- Simple job configuration(ui configuration)
- Scripted job configuration (outlines)
- DSL and scripted pipelines - Read, write pipelines using shared libraries
- Compiled languages
- App development lifecycle
- Servlet containers for web app
- Tomcat and Jetty management
- Logging subsystem management
- Dependency management
- Package differences and inheritance(jar, sar, war, ear)
- Testing types - Unit, integration, instrumental, UI-testing, load testing, stress-testing, etc.
- Frameworks - Test frameworks like jUnit, jMeter, etc
- Manual vs Automated - Differences and process automation
- Test case management - Outlines
- The responsibility
- Desire for self-development
- Agile software development approach - Outlines knowledge, share this point of view.
- Follow rules and instruction
- English - Conversational. Business letters and technical documentation writing.
- Working with an international team of world class professionals on exciting and challenging projects
- Relocation program for new hires
- Learning & Development opportunities – mentoring, lectures, participation at industry conferences and events
- Medical Insurance package
- Sensible flexible working hours
- Breakfasts, snacks and fruits available during the day, tea and coffee machines
- Friendly team and a friendly environment
- Casual workplace environment in downtown St. Petersburg; including bicycle parking, gym, game and chill-out zones
- Additional benefits – care bonus to cover health, educational and safety needs, three paid days without sick list during a year, corporate parties and team buildings, referral bonuses and many more others
- Potential Business trips to Canada and USA