The ThoughtWorks Technology Radar is full of good stuff. Here are my personal favorites:
There's an upfront cost in building more distributed systems with independently operated micro services but it brings so much clarity to your world. You can align small agile teams with each service, you have much more explicit conctracts, leaky interfaces becomes more rare.
The key trend here is that platform services and frameworks have come a long way to make it easier to build micro services. So you should absolutely trial it out and understand just how the cost compares to your current approach.
I could go on about this forever. Several forces are at work here:
- Mobile: When your employees want to do all their work from their mobile device, your good old firewall is no good anymore. Now you need to implement security on a per service basis and via MDM.
- APT: Advanced persistent threats are only going to grow. A single firewall with everything open behind it is a terrible idea today.
- Cloud: Private cloud will be at least a temporary, at best an incomplete answer to the future of service creation and consumption by enterprises. In the future (and the future is here today for small and medium sized companies), your business will be consuming services that are homed in dozens of data centers all over the world. Within each physical data center, you will be dealing with multiple virtual networks related to each service. Forget about a single perimeter for your security needs.
- Degraded trust in Internet infrastructure: Recent events have degraded trust in the core Internet infrastructure (on which company private networks often rely). Businesses will have to take new threat vectors into account where perhaps zero individual pieces of the infrastructure can be trusted. At a minimum, it completely invalidates a single perimeter security posture.
Continuous deployment used to mean deploying changes to the same, already-provisioned environments. Not anymore. Many automated deployments involve provisioning of services and resources which adds complexity to testing. Good to see this called out.
Log streams provide an opportunity to standardize how events get from emitters to consumers. Every developer knows how to write to a log stream. Passing log streams around is fairly well understood and reading them and processing them is too. All we need is to decide on some sensible common logging formats for structured data.
Bridging physical and digital worlds with simple hardware
A.K.A. the Internet of Things. ThoughtWorks really nailed this one. The hardware world is beginning to behave like the software world, opening up a whole new playground to software-minded tinkerers. Check Electric Imp and SmartThings's Developer Platform for an example of what this can look like.
Huge kudos to ThoughtWorks for including this. In this age where big data and data science are popular memes, the tendency is to gobble up and store as much data as you can. The risks of doing this are becoming more apparent every day. Additionally, there is little evidence that much of this data is put to good use. Often, when a business finally gets around to analyzing data and trying to make sense of it, it learns that it hasn't captured the right data in the right way.
Better to not capture the data until you are committed to putting it to use. In most cases you don't know what to capture until you know how you want to use it.
Development environments in the cloud
It is still hugely complex for developers to set up a personal development environment when they join a project (or start a new one). By moving development environments to the cloud you can let a cloud service handle the setup and lifecycle of these environments based on explicit formulas that ensures that everyone has exactly the right environment. Troubleshooting difference in environments is still one of the main time suckers for app developers. It must go away.
Docker is a great approach to building, running and managing apps in a whole-stack way.
Dropwizard deserves more attention than it gets. Perhaps the Maven learning curve is a barrier. But it's a great framework for writing micro services in Java. It must be a great fit for Android developers who want to build backend services for Android apps.