Everything as Code
Infrastructure as Code - our weapon for Agile Infrastructure. Reproducible, Prototypable, Easily Changeable systems. We want to be able to configure everything that our application is going to use, at any stage of the stack, using PHP code from within our application.
In reality, our Applications consist of more than server side code. Modern Applications can include code across a much wider stack, and all of these things can be delivered in a single language, PHP - when built on a Pharaoh Tools Platform.
We want to deliver all of the following:
- Server Applications Drupal, Joomla, Wordpress, Zend, Symfony or Custom: The most widely used Server Side Frameworks on the Web and common to development teams using PHP.
- Client Applications Web, Mobile or Desktop Client Applications in Native PHP. ISO PHP (using the Uniter PHP Library) is the first client side Framework written in PHP. It's also Isomorphic and therefore capable of being deployed to Web Client, Mobile Client or Desktop Client. Pharaoh Tools automation allow for these deployments to happen in a single click.
- Infrastructure Code Databases, API's, Packages, Files, Permissions, Users and all of the many other things your applications may use and change. Our Infrastructure Code also covers configuration across Development and Cloud Environments.
- Automated Testing We should be able to test our applications at unit or functional level, for any platform or device, using our Automation Tools.
We commonly write our Server Side Applications, Unit Tests and our Web front end tests in PHP already, so shouldn't we go for our whole stack using a common language? Why not have every resource that we consume in our app controlled in our app code. Our automated tests of any kind in any environment, our test configurations, our server configurations, our infrastructure, our virtualisation management, our source control management, our build configuration and management, our monitoring configurations, everything.
We can use convention over configuration like we would in any framework, and allow ourselves the benefits of being reproducible, versioning, and being extendable across the entire stack. We can be as granular as we need when we need to, but can still prototype in no time.
Even better, we'd like to have all of this stored in a single repository where we can, and we have a demo single repository application with all of the above. The ISOPHP Website, which is also the Framework Example, can be seen here as a Website : http://www.isophp.org.uk and as a Public Code Repository here https://repositories.internal.pharaohtools.com/index.php?control=RepositoryHome&action=show&item=iso_php_example_application . It includes all of the above .