Every institution should be led by some guiding principles. Awayto indends to be a professional development toolkit, for deploying applications of various kinds quickly, accurately, and with high value. While these goals may be ambitious, if we approach the problem from the right angles, many aspects can be simplified and compartmentalized. Here are some big ideas that drive our trajectory.

  1. Environments should be reproducable – Using docker is fine, but even that is an additional layer ontop of the evironment that will support docker. At the end of the day, you need to use a hosting service of some kind. The foundational implementation and technological services therein should be readily available to you, the developer, in the event of a disruption. The less black boxes, the better.

  2. A deployed environment cannot be replicated locally – No matter which way you twist it, you are not the servers you deploy to, and any attempt to replicate that scenario can only be validated in extremely targeted situations. A testing suite only goes so far. With deployed development environments, developers more or less know that the code they’re writing plays nice with the infrasturcture they intend to run on.

  3. Monoliths and microservices coexist – Businesses and applications become beasts. As the beast grows, microservices should enhance a system’s characteristics and offering, but not reshape it. In turn, the system’s architecture should reach wide and start from a large base. Common developmental and application-based features need to be built into a system from the origin, and not an after thought. Type schemas, apis, file systems, roles, access control, and so on; with a strong base of features set out within a conventional design, future services can thrive.