1. Guide
- µSOA1: One developer per microservice.2 HTTP is the only interface between everything.
- Agile: You need to be able to hot-deploy everywhere because you'll want to work with others remotely at high iteration speeds.
- Architecture: The developer is completely free to choose any software (languages, tools, persistence etc.) of the service.
- Turnaround: Maximum build & deploy time on live is how long it takes for you to switch to the test client. (1-2 seconds)
- Ownership: The developer owns and is responsible for the service everywhere at all times.
- Errors: Should be pushed from each live client to the service developers mobile phone in realtime.
- TDD: Test only what makes development slip due to complexity.
2. Manage
- The data -producer, -consumer and developer trio have 1 minute per person remote3 daily yester/morrow meetings.
- No other mandatory scheduled meetings.
- You should be able to work from home.
- If you finish quicker than expected, you own that remaining time.
- No documentation. Automatic API.
3. Store
- If persistence can be a file, make it a file.
- If you need:
- Index; use the file system.
- Relations; use a graph.
- Full text search; combine the two!
- Your persistence should use HTTP.
4. Develop
- Each module describes it's own use: f.ex. if you browse to /login you should be able to login! (model, view and controller)
- Use async for:
- Server response; if you have high iowait or realtime services.
- Client requests; if you can concurrently build the response to reduce latency.
- For top performance and speed FUSE both.
- Use the same development keyboard and OS everywhere.
- Use JavaScript injection for modularity, over; chunked response, CO-XHR or even XSS (careful with the cookies though).
5. Host
- Minimum two subdomains per service (f.ex. dev.
<name>.host.com and <name>.host.com):
- On same server provider.
- Port 80 only.
- Increase socket memory if you serve large files.
- If it makes economical sense to use Akamai your software is probably bad.
- DNS Roundrobin across backbones allows for 100% uptime. But this requires a new kind of real-time distributed persistence.
- Install, configure, monitor and notify yourself; even the hardcore stuff.
1 Micro Service Oriented Architecture an evolution of Microservices and SOA.
2 If two people choose the exact same tools they can work on the same service; the whole point is that nobody should have to compromise with their tools. The work should not be to configure others tools, but to design a specific product with clear separation of responsibilities between developers.
3 Jason Fried, We Work Remotely, Mandy Brown.