The core problem of micro services – how many feature can you fit through the pipeline before it breaks down?

At Amazon I had the chance to watch a monolithic service reach the point where it had to be split up into microservices. When I started we had about thirty software engineers contributing to our service. We had the great idea of developing a framework to speed up feature delivery for everyone in Alexa Shopping. The framework ended up working and the number of people contributing code to our service shot up over the next two years. As of July 2021 we had around 200-300 people in our partner support slack channel.

What happened is that we gradually spent more and more time supporting tests in our CD pipeline. First we had an oncall who did operational support and pipeline release support. Then once that person got swamped and complaints about release frequency got louder we added a second person to operational support. Then we had one person doing releases and outages with a second doing partner pull requests and office hours. 

Growth continued during this time and we attempted a number of changes to federate features and split out responsibility. We split end to end tests into separate suites so it would be easier to find out who knew what a feature was supposed to be doing. This helped a lot, prior to federating the test suites our oncalls would spend a lot of time deep diving end to end tests to figure out what was going on. Afterwards it was a lot easier to find out who we could ask for help. 

One thing that was a huge failure was expecting other teams to debug and fix their end to end tests in the pipeline. Typically, team A has a launch deadline and it asking us to deploy now. We get their code to the staging environment and we see test failure from teams B, C, and D. Teams B, C and D do not have a launch deadline so they are not prioritizing fixing their end to end tests. 

Another big failure was splitting each teams rules into a different repository. We ended up with ten repositories with one relevant file in each. It could have just been a folder in the original project. Plus it was a lot harder to figure out where to put things with ten different projects. The nail in the coffin from my perspective was that the rules were still deployed together. 

One final issue was integration tests. We wanted people to write integration tests, but everybody (including myself) avoided it as much as possible. The reality was the DSL for our end to end tests was significantly better than for integration tests. It was hard to reason how you were testing your specific feature at the API level. But in the end all our feature changes were directly testable at the end to end test level. It was just a lot quicker and easier to write an end to end test than API level test.

Finally, we reached the point where we had to split up the monolith purely because the pipeline was blocking too many teams. It was a risk because in the short term we knew it would increase operational overhead and delay needed upgrades. Unfortunately, the team lost about 50% of its people especially the most experienced ones. And I was one of them so I don’t know how things ended up. 

Self-hosted is not cheaper or better. Your options are pay Amazon insane markups or deal with a Platform as a Service built by the lowest bidder.

We often see posts on hacker news about how Amazon charges an insane markup for hosting or data transfer, or anything. Then someone will post a comparison where they price out an equivalent amount of hardware and show that it would cost 1/5th or 1/10th the cost. They then assume, obviously, hiring an IT department that can run this hardware is an achievable goal. 

Sorry, no it’s not achievable. Most companies cannot build a decent IT team that could run their own servers. They don’t have the ability to organize or hire the IT people needed. Not to mention they would never be willing to pay the salary costs. Quite simply, most businesses that try to run their own hardware will have a lower quality internal platform than if they just paid Microsoft. Whats the point of having faster hardware if your software stack is stuck in 2005 and managed by college drop outs?

Most companies are not overflowing with smart programmers who want to run bare metal hardware. Those people are moved to higher paying jobs programming the actual products of the company. 

Collected Sledgeworx

The collection is out now!

I’ve finally released my collection Collected Sledgeworx on amazon.

I started blogging to share my thoughts and vent frustrations. My first blog was about futurism and politics, my second on fitness, my third was Sledgeworx.io. I ended up being much better at a writing about software than anything else.

In this book I have collected many of the posts on the blog from its inception until the second half of 2021. These writings can be found on the blog in similar form. But you will find that the works in this book have been edited and supplemented in small ways.

Thanks for being a reader as we continue along to 2030!

What happened to Seviipay

Seviipay is a SAAS startup I launched in Summer 2021. The idea was to bring best in class UI/UX to native cryptocurrency payments. Basically the stripe of cryptocurrency payments. The MVP worked on mobile and desktop just for Ethereum. I did a few product discovery calls without getting any buyers.. Eventually the project kind of stalled and I moved on to other projects. 

The big thing here was motivation. My motivation for leaving my job was not Seviipay. The idea for Seviipay just came up at a time when I was really motivated to get out. Handling burnout and starting a business at the same time is not a great idea. 

Another issue with Seviipay and solo-bootstrapping in general is that you need a lot of skills to get a functional business working. Sales, Accounting, product, UI/UX, marketing, etc. I did not have enough of those skills at the beginning of the project to make it work. There is a reason startups usually launch with a product founder and a sales founder. 

One other weakness of Seviipay or me I guess is that I do not have web design skills. And I have struggled to make Seviipay visually appealing. I am a written word guy so if I thought of a product that was cli only I would build it. 

My skill stack now has grown to range from backend development, javascript, content marketing, copywriting, and a bit of sales skills. But that still isn’t enough to make Seviipay work, I need strong web development skills and more sales power. 

What is next for Seviipay

Seviipay is on hiatus for now. I’ve gotten a new software job and am getting up to speed for that. Also working with some friends on helping start up an agency. The next thing I need to do is hire a web developer to help with the UI and team up with a sales person to get a real sales process going. 

I’m also going to look into how I can make Seviipay a real Web3 business. Right now its a cryptocurrency SAAS that relies on Web 2.0 to join the blockchain with the old school internet.

What is Web3? It’s about owning your user identity.

There is a lot of discussion of Web3 lately. Is it a scam? Is decentralized finance Web3? Will Web3 destroy Web2? In this blog post we will talk about what Web3 is now and what Web3 allows us to build tomorrow. 

What is Web3 now? 

Right now Web3 is a technology paradigm which supports two main types of services Decentralized Finance (Defi) and Non-Fungible Tokens (NFTs). A lot of online discussion about Web3 focuses on whether NFTs are valuable or if Defi is a scam. People want Web3 to be a scam. In my opinion that is the same as looking at pets.com in 2000 and concluding that Web 1.0 was a scam.  

We are just starting to build software using Web3. And it’s going to be awhile before someone creates the Amazon.com of the Web3 era. Right now we have NFTs and Defi. NFTs are an interesting way to sell ownership of digital goods. An NFT is not a JPEG on the blockchain. Strictly speaking an NFT is a unique identifier on the blockchain. Through metadata you can add any rights to that NFT you want to. Is that useful? Are all NFTs worth $60 million? I don’t know, some people think they are valuable. And we will see what products come out of it over the rest of the decade. 

How about Defi then? There are two main Defi products I know about. Yield farming and token swapping. Yield farming is the idea that you give your tokens to a smart contract, and then the smart contract gives you interest in return. In my opinion yield farms are mostly scams. Yield farms are evolving to combine the characteristics of gambling and ponzi schemes. Does anyone really believe they can earn 10% interest per day by investing their money into Drip? I don’t think there is any real product that yield farms produce. Some claim they provide liquidity, but liquidity does not double dumb money every year. 

However, token swapping is a real product. Decentralized exchanges allow you to swap your tokens for any of the myriad cryptocurrencies out there. In seconds, with relatively low fees. That is useful in a world with incredibly large numbers of tokens.

How is Web3 different from Web2? 

Web2 is probably best exemplified by Facebook. You have a Facebook account, using that account you can post on Facebook and Instagram, message your Facebook friends, sell things on the Facebook marketplace, etc. Facebook owns your account data. If you want to rebuild your friend graph on another platform its going to take a ton of effort. And if you don’t follow Facebooks rules they can simply delete your account. In a core way you have created a digital identity using Facebook’s platform which Facebook owns. 

The key difference between Web2 and Web3 is that in Web3 you own your digital identity. Your cryptocurrency wallet is now your digital identity. Specifically, your wallet’s public key is now your digital identity. This is very different from Web2. In Web2 you use other people’s services and your identity lives in those services. You create a Facebook account using your Gmail account. Your root identity is just an entry in somebody else’s database. 

Why does owning your online identity matter? 

First of all getting banned is much less of a concern. You control your online identity via ownership of your private key. If you buy NFTs via opensea.io and subsequently are banned from opensea.io all the NFTs you bought remain your property. In contrast if you bought League of Legends skins and were banned you lose your entire investment. Does it matter if NFTs and League of Legends skins are really valuable? No, but you definitely spent money on them. And you would be pissed if your $300 JPEG was lost.

Web3 is the difference between being a guest on Facebook’s servers and being a citizen of the internet. Being a guest is nice because Facebook takes care of everything. But guests don’t get a say in how they are treated.

It is hard to tell how big of a deal owning your digital identity will be in the future. So far we have Defi and NFTs as examples. Whats good in the Defi and NFT world? My favorite is how user accounts work. You may never have used opensea.io, maybe you bought an NFT from another platform. But you can still log in to their platform. They will ask for your email, but its not required. All they need is for you to prove ownership of your public key and they can populate your account data from the blockchain. Don’t like the UI or the fees? Log out of opensea.io and find another NFT marketplace. All your NFTs will be there too. 

The process of logging in and out of websites is totally different because you own your digital identity. You don’t need to use an email to prove you are a real person. You don’t need a password because you just sign a message with your private key to prove your identity. The biggest losers of Web3 may very well be password managers. 

Conclusion

The interesting part of Web3 is that the users own their digital identities. It will be a paradigm shift in how the internet works with some control moving from software platform providers (Facebook, Google, etc) to the end users. It’s not a scam, you really will be able to control your digital identity. But Web2 is not going anywhere anytime soon. Email isn’t going to stop relying on someone else’s machine. But you might finally be able to encrypt your emails because you know your friends public keys.