What exactly does “Enterprise” mean with regards software?
“Enterprise software, also known as enterprise application software (EAS), is purpose-designed computer software used to satisfy the needs of an organization rather than individual users.”
“Enterprise application software includes content, communication, and collaboration software; CRM software; digital and content creation software, ERP software; office suites; project and portfolio management; and SCM software.”
So it seems that when dealing with the enterprise we are developing software for an organisation as opposed to individuals and typically this is some kind of management or collaboration system.With that in mind, what makes software built for organisations so different to that built for individuals? Well, it tends to make the software that much more critical. The entire success of a business could hinge on how well its software delivers.
Due to the critical nature of enterprise software, it usually needs to have the following characteristics:
Furthermore, it will often need to interface with other services such as directory access services (e.g. LDAP) or third-party web services.
Historically platforms such as .NET and Java have been used for enterprise applications, as they’re generally considered to possess these exact characteristics. A big part of their popularity is also down to them having the backing of big companies such as Microsoft (in the case of .NET) and Oracle (in the case of Java). But where does PHP come into this?
PHP is in the best place it’s ever been to compete as a platform in the enterprise space. Its benefits include:
Shorter time to market
The sheer productivity of the engineers who work with PHP means that you can produce a minimum viable product more quickly, which makes it quicker to enter the market. This is because PHP’s flexibility encourages fast implementation of complex requirements, bringing us on to…
PHP is incredibly flexible. It’s really easy to make changes right up until the time of go live. It also scales up and down really well, meaning you can use it for everything from simple applications to large transactional systems.
PHP has always had a good reputation for working on a multitude of platforms and services. It runs on Linux, Windows, OSX and IBM without issue, and has many libraries and packages available for integrating with other platforms. This makes it really easy to integrate a PHP application with your in-house Java or C# application, for example.
Availability of personnel
PHP developers are typically much easier to find, as the number of PHP developers outweighs many other platforms.
These benefits have only been enhanced as the language has matured, the toolage improved and the community become stronger than ever.
PHP started out as a few useful scripts for its creator Rasmus Lerdorf to create dynamic websites. Since then it has grown massively, in large part thanks to Zend who matured it into a serious platform.
This notion of organically growing a language has a number of benefits. Rather than designing a new feature which could be wasteful, you can pick and choose the best parts of languages like Java & C# and bring them in when it’s time to do so. This adoption of new features has gained momentum over recent years, really helping close the gap between PHP and these other languages.
Being open source, PHP benefits from having one of the largest user-base communities of any language constantly contributing to its development, maintenance and support. This has resulted in numerous libraries full of pre-built modules for engineers to choose from, helping reduce unnecessary development effort as they can just slot the components they need into their application. If something entirely bespoke is needed, this too can be created with ease, unlike proprietary software which often has strict guidelines around usage. Because the community is constantly reviewing every aspect of the language, the security and quality of code is also safeguarded, and if you’re trying to find a solution to an issue it’s likely someone else has already resolved and documented it.
Web security is a hard thing to get right; this is true whatever platform you use. What helps developers build secure applications is having the right framework that leads you into building applications in the right way. There are a number of PHP frameworks which help instill best secure practices, Symfony and Zend framework being two, and I’m sure there are others out there also. If you are using a professional framework such as this, then you’re just as secure on PHP as you would be on any other platform.
PHP has also recently been adding more useful features to the language to help with security such as the new (since PHP 5.5) password hashing API. Furthermore, there have been some great initiatives in the community to aid with security. One that particularly stands out is the SensioLabs security advisories checker. This is essentially a database of all known vulnerabilities for many PHP libraries and a tool to check your dependencies (libraries you use in your codebase) to see if you are using any library, or version of one, which may be susceptible.
PHP has always benefitted from a healthy ecosystem, which has only got stronger in recent years. Industry-standard version control systems such as Git are widely used, and it has an excellent dependency management tool Composer, which with the birth of Toran Proxy is really enterprise-ready.
PHP is also easily integrated with all reputable cloud platforms. Google App Engine announced PHP support in October 2013; Heroku added PHP support in April 2014; and Microsoft’s enterprise cloud platform Azure has supported PHP for a long time, as has IBM’s Websphere.
The tooling that surrounds PHP has always been good, thanks in no small part to the excellent community. Over the last few years though it seems to have got even stronger, particularly in areas such as testing. PHPUnit, like many of the xUnit testing libraries has long been a staple of the PHP testing ecosystem and it remains in good shape thanks to the work of its maintainer Sebastian Bergmann. However, in recent years it has been joined by excellent testing tools that support Behavioural Driven Development (BDD), an extension of Test Driven Development (TDD) that provides a way of easily adopting an ‘outside-in‘ approach when developing applications to ensure that the needs of the business are at the forefront.
With PHP, it’s also really easy to get started with Continuous Integration; the process by which developers integrate their work into the main branch of development several times a day to ensure the codebase remains clean, has no broken tests and stays within configured limits of defined metrics. Tools such as PHP CodeSniffer, PHP Depend and PHP Mess Detector, among many others, are available to check your code adheres to these standards, helping limit technical debt and avoid bugs in your application.
As mentioned above, PHP has some serious backing from Zend. Zend is the maintainer of the official PHP engine and offers tools such as Zend Server and Zend Guard to help push PHP in to the enterprise. If that wasn’t enough, there are some other big organisations that have invested heavily in PHP.
Facebook has famously been using PHP since the social network’s launch, and as Facebook has grown it has been contributing back to PHP as much as possible. This is especially true of its own PHP engine HHVM (Hip Hop Virtual Machine).HHVM is the successor of HipHop which we predicted back in 2010 could have a large impact on PHP. It uses Just-In-Time (JIT) compilation to give PHP a major performance boost. Furthermore, it recently announced Long Term Support (LTS) for HHVM meaning that using HHVM in production is near to becoming a reality for many.On top of HHVM, Facebook has also built a new language called Hack, which provides the features some feel are missing from PHP that are present in other enterprise languages such as Java and C#.
Unlike Facebook, you may not have heard of SensioLabs. SensioLabs is the company behind the popular Symfony framework. Symfony has a very good reputation and is geared perfectly towards enterprise-level applications. The Symfony philosophy is great proof of this: “Embracing and promoting professionalism, best practices, standardization and interoperability of applications.”
SensioLabs has also been pivotal in bringing PHP into the enterprise. Along with the Symfony framework there are a number of high-quality Symfony components available for use in any PHP project, as well as the SensioLabs Security Checker mentioned earlier and a new static analysis tool called SensioLabsInsight, which can detect security risks, bug and metrics such as technical debt and work out how long they will take to fix.
Another encouraging thing about SensioLabs and PHP is that Sensiolabs recently raised funding to enhance Symfony and “implement its PHP framework Symfony everywhere”.
I’ve alluded to it a number of times throughout this post, but the PHP community is second to none. There are over 100 conferences a year dedicated to PHP and the aim of each of these is to discuss best practice and how developers can develop more secure, robust and reliable applications.
There are also countless blog posts, videos, news groups and IRC channels solely aimed at helping ensure PHP developers are working as smart as possible.
If you were left in any doubt that PHP is ready for the enterprise, let’s take a look at some of the stats:
At Box UK, we’ve had experience of working with PHP on a number of enterprise applications, such as a content management system for a large investment banking organisation, career planning tools for students, data storage libraries and search tools for one of the world’s leading suppliers of electrical components, content-managed websites for the UK’s leading commercial TV marketing body, and much more. If you’d like to see what Box UK and PHP can do for you, get in touch!