This article focuses on the sysadmin skills that any web developer should add to their armory to build better applications. Having these skills is important because the arena for web development changes at a rapid pace, and new technology hits the road what seems like every day, meaning that what is relevant today might not be relevant in a year or two. Then, there is the constant upgrading and security patching.
As a web or desktop application developer, the code you write will run on a machine, whether that is your local system, a device, or (eventually) a server. Understanding how the machine works and the environment in which the machine operates will improve how the application is built. When it comes to understanding how your machine operates, there is no one better to look to than the system administrator who battles with the machine, day in and out.
A system administrator is primarily responsible for monitoring, alerting, user administration, and:
- Maintaining the hardware and software upon which the code is executed.
- Handling the system’s environment, including the network, power backups, etc.
- Ensuring the system is safe and accessible at all times, even during a disaster.
- Creating documentation for continuity.
Let’s take a deep look at how each of these skills are useful to a developer.
Hardware and software
Apache2 and Ngnix are two popular and widely used tools to serve web applications. Apache2 is a threaded server while Nginx is a forked server. This means that while Apache2 is good at serving dynamic content, Nginx is better at serving static assets. A web developer writing a web application and limiting themselves to that specific task without the grasp of threads and forks will be indifferent to the choice. A developer who has a good grasp on the hardware or software enabling their application reaps the rewards of building the best one out there.
Two good articles to help get you started are Turning on the LAMP: Linux, Apache, MySQL, and PHP and Admin 101: Apache survival basics.
The target environment
When building any software, the network tops the list of things a developer might overlook. For example, when an application loads, it makes 100 HTTP calls. Each call has a latency of 1ms, which is 100ms. When 100 users access your application from the same network, each user faces 100ms of latency for the application to load. Regardless of how optimized your application is, the users facing these delays will have a bad experience.
Had this factor be considered at the time of design, the developer could have made calls judiciously regarding latency and other factors (like bandwidth) taken into consideration. Then, they could have fine-tuned the application so it delivered the results it was built for.
System security and accessibility
A sysadmin is tasked with ensuring the safety, accessibility, and reliability of a system. Every application has its environment defined by a configuration management tool. If the application written by the developer has this issue in mind, then in the case of one or more key resources not being available, the application can switch to fallback resources and continue to operate smoothly.
Make sure your system is secure. Two articles to get you started are 5 tips for getting started with Linux server security and Security advice for sysadmins: Own IT, Secure IT, Protect IT.
In *nix based systems, code requires privileges to run on the host system. This privilege is derived from the user who runs the code on the system. Restricting user privileges to minimal and as-required reduces arbitrary code execution with escalated privileges.
Learn more about managing users in Linux sysadmin basics: User account management.
Monitoring and alerting
Every time there is an event of importance where new features are announced and traffic surges, system administrators are at the forefront to keep the show running. How do they do it? They keep an eye on key metrics like CPU usage, memory, and network activity to identify surges. At times, there can be a denial-of-service (DoS) attack on public endpoints. When proper logging is enabled on the application, the sysadmin can plug these logs into their monitoring tools and apply rate limits to that specific endpoint to save the application from going out of service.
Great events in history are remembered today because somebody chose to write about that event. Similarly, knowing the nuances of how system internals work isn’t something gained on day one. This knowledge has to be gained by working with the system on a day-to-day basis. Sysadmins make a good habit of documenting the what, why, and how of a specific decision, like which subnet a resource should belong to. This documentation can help other sysadmins get up and running in a short period.
Developers, with the aid of documentation, can share the decision-making process that resulted in their specific code. This practice can reduce the cognitive effort need for a new developer to adapt their skills.
Here are a few more reasons why documentation is important: Syadmins: Poor documentation is not a job insurance strategy.
That’s a lot of tasks for a sysadmin, and all of them are no less important. For a web developer, it starts with understanding the basics of hardware and software, plus user and code permissions. Then familiarize yourself with monitoring, logging, and networking. Last, but not least, write good documentation.
I hope this article helps web developers identify key skills to create applications that they are proud of.