7 Current Trends in High Performance

1. Design servers which handle requests as microservices.
2. Design routing handlers from event-driven, non-blocking I/O models like NodeJS, libev, libevent.
3. Use a high performance load balancer like HAProxy.
4. Use a reverse proxy that caches application delivery like Nginx.
5. Use a content delivery network provider that handles subsequent requests for your static content by caching your files at their edge nodes.
6. Use a content delivery network provider that dedicates cache space globally for your website at their edge nodes.
7. Use a content delivery network provider that performs dynamic content acceleration for your website.

vSAN Simplified!

Let's assume you've read all of VMware's recommended reference books on how to design a vSAN platform. You've designed the fabric of your vSAN for traffic management. You've calculated your vSAN's storage requirements for its Capacity Layer and its Cache Layer. What's next? 
You can follow this simplified guide with only seven steps to get your vSAN working!
Step #1 Assemble your servers with the correct ratios of disk drives to flash drives.
Step #2 Configure the BIOS settings of your servers.
Step #3 Install the ESXi software on your servers. ESXi will automatically configure itself based on the BIOS settings.
Step #4 Check that the vSAN objects were setup correctly on your servers.
Step #5 Install the vCSA software on a server outside of your storage cluster, then configure your Organization, Primary Adapter, and Primary Virtual Switch.
Step #6 Connect to your vCSA using your vSphere client to configure virtual switches for Management Traffic, vSAN Traffic, and vMoti…

Comparison of Functions, Threads, Objects, Components, & Services

DistributedSpeedVery fast IPCVery fast IPCFast IPCSlow IPCVery slow IPCOptimizationCompilerCompilerInterpreter

DevOps Engineering

DevOps changes the traditional models of Software Development and IT Operations in a business. DevOps brings together Software Development and IT Operations as programmable infrastructure or infrastructure as code.

DevOps is about managing the configuration of infrastructure using automation and programming via Agile, Continuous Integration and Continuous Delivery.

Continuous Integration automates the building and testing of code in a test environment (that's an exact clone of the production environment) as changes are made to a version control system.

Continuous Delivery controls the phases of Continuous Integration, and deploys new changes to the production environment.

The CI/CD services of the infrastructure follow the client-server models of microservices architecture. Microservices require orchestration software to build and deploy distributed services hosted on virtualization platforms. Those distributed services use a centralized MQ/API for inter-service communication to exch…

Continuous Integration (CI) Best Practices

Continuous Integration (CI) automates the building and testing of software in a test environment whenever a change is committed to a revision control system. CI performs QA testing of a change before adding it to the current working version. CI makes sure all development can be integrated into a build.

CI Best Practices

1. Maintain a test environment that's a clone of the production environment. 

2. Maintain a revision control system such as CVS, SVN or Git.

3. Automate the building of software and the documenting of code in the test environment.

4. Automate QA testing of a change then report that change to developers.

5. Commit changes regularly to avoid integration conflicts.

6. Monitor the revision control system for a commit then build the software before replacing the current working version.  

12 Principles of Secure Linux Programming

1. Operate with least privilege
Hold privileges only while they're required.Drop privileges permanently when they'll never be used again.A privileged program should never exec a shell unless the environment can silently ignore set-user-ID and set-group-ID permissions.Close all unnecessary file descriptors before an exec.2. Avoid exposing sensitive information
Use mlock to lock access to the virtual memory page in use.Prevent core dumps by using setrlimit.3. Confine the process
Use capabilities and securebit flags whenever possible.Establish a chroot jail to limit the set of directories and files that a program may access.Use a virtual server: UML, Xen, KVM, etc.4. Beware of signals and race conditions
Signals should be caught, blocked, or ignored to prevent possible security problems.5. Pitfalls of file operations and file I/O
Umask should be set to a value that ensures the process never creates publicly writable files.Use seteuid and setreuid to temporarily change process credenti…

Big-O Simplified!

Big-O notation describes patterns of activity of systems in terms of standard mathematical models in which an amount of resources (time, quantity, cost, etc.) determines scope. The patterns of activity must contain input that can be isolated and modified to be improved without negatively effecting the desired outcomes of their systems. Big-O helps systems analysts describe patterns of activity as best-case, acceptable-case, or worst-case. Big-O is used in business and computer science for documenting system behavior and for arguing system improvements.

Patterns of activity of systems are typically expressed as algorithms. In the simplest terms, big-O is an estimate of the optimal efficiency of algorithms.

When comparing two or more algorithms for optimal efficiency the following criteria must be met:
Algorithms were designed using the same language.Algorithms result in the same measure (e.g. running time).Algorithms use the same set of operations.Algorithms have an estimated number of o…