Loosely Coupled, Tightly Aligned: Microservice Architecture for Your Money

company-concept-creative-7369.jpg

Let’s start with a couple questions:

  • What does your financial life look like?

  • What feelings come to mind when you think about it?

These are pretty overwhelming questions, and there are so many different ways to answer it. That’s because your financial life naturally becomes a complex problem.

In software development, we have to solve complex problems all of the time. Let’s take the example of your company wanting to build a new application. If you’re fortunate enough to be involved in the kickoff of a project, then you get to hear the problem statement and vision from your end users (aka “The Business”). And if you’re really lucky, lunch is provided. The group will give a high level set of goals that they would like to see accomplished. The list would look something like this:

  • Create new capability, become a pioneer

  • Increase throughput and enable us to serve more customers

  • Enhance customer experience and satisfaction

  • Improve stability and security

More than likely, what has been described is the need to develop an application that can do several different types of tasks. Commonly, apps are built with the need to:

  • execute complex business rules and algorithms

  • streamline and automate processes

  • integrate with 3rd party vendors

  • provide metrics and analytics so that the end user can easily make informed decisions

  • have an admin console to allow certain users to control access and behavior of the app

  • and of course, have a sleek and responsive look and feel that drives people to want to use it

Now that you have a high-level understanding of what this application needs to do, you have to make decisions around how to create software that can check all of these boxes. This is the nature of software architecture. Traditionally, the resulting application would almost always be considered a monolith. With this pattern, everything is built into one large application. Let’s call this example “MPS”, because it’s never given a cool name and instead is an acronym for something that no one can remember.

When it’s first rolled out to the business, MPS may be everything that they wished for. They sing praises to MPS. But then 1 month later, the enhancement requests and bugs come rolling in. So you shoehorn in a fix here and an enhancement there. Fast forward after a couple of years of doing this, and MPS is a hot mess. IT doesn’t want to touch it, the business doesn’t want to look at it and it’ll cost a fortune to maintain it. “You’re telling me that updating this field can go to production in 6 months and it’ll cost what?!”. The landscape has changed. MPS is no longer meeting current needs and is now a major source of anxiety.

This has been the classic path of monolithic applications, and I’m confident that every reader who is in the tech industry could do a quick “replace all” and describe one of their company’s applications.

An approach that has taken the software architecture world by storm, and for good reason, is the use of microservices. In a nutshell, the idea behind microservices is to structure an applications as a collection of smaller, loosely coupled services. Each individual service has one job, and its mission is to do that job as simply and efficiently as possible. In our MPS example, one microservice may be responsible for executing a rules-based algorithm, and is completely decoupled from the service that is responsible for integrating with the 3rd party vendor. When broken out like this, we can wrap our head around how each service works. To be loosely coupled means that services talk to each other through an agreed upon contract, but one service doesn’t depend on what is happening behind the scenes of the other. This way, when the algorithm needs a major overhaul, it can be swapped out without having to drag the rest of the application with it.

Defining our financial microservices

adult-beanie-brainstorming-7367.jpg

How does any of this relate to personal finance? Think of your financial life as a complex application. It’s very possible that it is a monolith - a hot mess that has resulted from years of neglect and shoehorned fixes. And like our software application example, it represents a major source of anxiety. By contrast, let’s lay out what a microservice personal finance architecture would look like.

LifeInsuranceService - I’m going to start with the area that is most often exploited by the traditional financial services community, and that is the selling of whole (or universal, or variable universal) life insurance. These are products that blend insurance with a savings vehicle. They generally have extremely high premiums, poor investment returns, and are aggressively pushed because they pay out huge commissions to the one who is selling it. Life insurance should just be life insurance! Buy term life for the amount that you need, and for the period of time that you need to be covered. Keep it simple.

EmergencyFundService - A set amount of money put aside to cover unexpected expenses. The operable word is ‘unexpected’ and pertains to things such as a job loss, car repair or home repair. Christmas isn’t an emergency. If your junker car has 250,000 miles and has been making a strange noise for 6 months, replacing it shouldn’t come as a surprise. This should be in a place that separate from your other accounts and highly available (i.e. simple savings account). Because if this service can’t respond quickly when you try to invoke it, things get bad!

CashFlowService - This is responsible for the daily money management, and gets the most traffic. Remember, the behind-the-curtain implementation of this microservice can vary, as long as it sticks to the contract of “don’t spend more than what I sent in”. In other words, you can do anything from reverse budgeting to YNAB to Excel to a cash envelope system. You decide what is most effective and efficient. If one doesn’t work, swap it out with another.

DebtService - This one can be a real resource hog, and the goal is to decommission this service as soon as possible. If it’s complicated, break it down for student loans, cars, credit cards, etc. The most effective way is to simply hammer on it until it’s gone. Once it is, that’s going to free up those resources to get allocated to the other services.

RetirementSavingsService - When you’re early in your career and in the beginning stages of saving for retirement, the RetirementSavingsService should be straightforward. Your focus should be on your savings rate rather than an elaborate investment strategy. But as your retirement account balance increases, your investments do constitute more focus and strategy with the goals of greater diversification and efficiency. It’s also very likely that you will change jobs, which means starting a new 401(k) plan. If you don’t take action, RetirementSavingsService becomes disorganized and inefficient, no longer fitting the definition of a microservice. So as these changes happen it’ll require some refactoring. Maybe it gets broken out into smaller services (for pre-tax, post-tax, pension, health savings account). That could also include consolidating your old 401(k) accounts into one account.

Word of caution here: 401(k) rollovers into an IRA are targeted heavily by financial advisors because it translates to either:

  • a.) a quick commission check when selling you loaded mutual funds, or

  • b.) a larger asset base to charge an ongoing percentage fee.

Never let scenario a.) happen. Period. In scenario b.), the advisor should be providing ongoing management of that investment, which helps justify the ongoing fee. There are scenarios where it would be more beneficial to consolidate into your current 401(k) (for example, to enable backdoor Roth IRA contributions). Make sure you clearly understand how your advisor gets paid!

I’ve covered some of the basic services that broadly apply to everyone. For your personal situation, you may have more targeted needs that require adding in more microservices. Some examples are:

  • CollegeSavingsService

  • StockCompensationService

  • LongTermCareInsuranceService

Putting it all together

Now that we have laid out the individual pieces, the big challenge is figuring out how all of these can fit together to make a coherent financial life. In other words, we figured out the “loosely coupled” part, what about the “tightly aligned” bit? That’s where true financial planning comes in. Here are some steps that will get you there.

  1. Have a personal “kickoff” meeting - Remember back to our project kickoff meeting? That’s where we defined the vision. Without a vision, there is no motivation and no direction. Think through what your best life looks like. What are your core values? How would you like to be remembered? Write down your answers using pen and paper. Something magical happens when you write it down, especially by hand. It makes it stick.

  2. List your goals - Similar to the goals of our application above, define the direction that will help carry out the vision you’ve just painted for yourself. Maybe your goals look like this:

    • Annual travel to experience new cultures

    • Increase charitable giving to have a greater impact on the causes that have a deep meaning to you

    • Have the financial freedom to be able to spend more time with family and friends, and doing the things that you love

    • Make sure that loved ones are taken care of when faced with challenges outside of your control

  3. Implement your microservices - Now that you know your goals, you can create services that align with those goals. For your travel and charity goals, CashFlowService will need to be tuned to direct money into those buckets. DebtService and RetirementSavingsService get special focus to attain the goal of financial freedom. EmergencyFundService and LifeInsuranceService are deployed to make sure you are properly protected from the unexpected.

Just as in software development, being organized in this way affords you the ability to experience real value quickly. You can slowly add in more until, before you know it, your personal finances look like a well oiled machine. Each service is easy to understand, and can be tweaked without needing to overhaul your entire financial life. In other words, maintenance is easy and your financial life can always stay relevant as your landscape changes.

Hiring a consultant

adult-analysis-chart-1516704.jpg

If you decide that you need help in this endeavor, your options are very similar to those in the IT industry. No matter what your stated problem is, if you bring in a Salesforce consultant, you can bet that the solution is Salesforce. What if there was an open-source solution that would work just as well? Similarly, if you work with someone who is paid to sell life insurance and other commissioned products for their company, you can be sure that the answer to your problem is life insurance and other products that have additional costs baked in.

Compare that with bringing in an independent consultant on a flat project-based fee or quoted rate. This is someone who is knowledgeable and free to incorporate all technology that is available. Ideally, it’s also someone with a deep understanding of your particular niche. They can design a solution that is tailored to your unique situation. Since their compensation is tied only to the ability to provide value and the quality of their work, you can be sure that they are motivated to simply serve your needs.

The independent consultant of the financial industry is the fee-only financial planning firm. Java Wealth Planning is one example, focused on serving software developers and other IT professionals. XY Planning Network’s Find an Advisor is another great resource to find a firm that is a good fit for your specific needs.

Don’t let your personal finances become the next MPS. If it already is, refactor.