In this post I am expanding on an original question I asked recently where I am looking for an opinionated build/deploy solution. I will provide some context on the software delivery model and tools used today, challenges with it and issues I am seeking to answer.
I live in the backend Java/Kubernetes ecosystem for Cloud/SaaS services so all examples are in context of that world. Tools/frameworks listed are examples only.
There are numerous tools and frameworks that need to be stitched together to perform various necessary steps to deliver a cloud service. …
Kubernetes docs give a good explanation of what their probes are but for your app how can we best translate these?
Think of kubelet asking the following questions to your app and here are some suggestions on how you should answer. Note that kubelet continuously asks these questions, not just at startup.
Can this pod serve traffic?
Currently I have this limited to “can I connect to my database?” That is the absolute must have. If the database is unreachable then this pod is not ready.
One decision you need to make is about partial availability. For example some microservices may have multiple dependencies. If a subset of those fail (open circuit) does that mean your entire app should now no longer serve traffic? …
Some commands that are used occasionally and end up needing a stack overflow search.
Get rid of any commits that are not pushed and reset to origin.
git checkout master
git reset --hard origin/master
Get rid of commits not pushed but keep the changes.
git reset HEAD~1 --soft
What I am doing is replacing a service running inside Minikube with one running on my local host (in IntelliJ). This helps to debug and change code quickly without have to build the image and update it in Minikube.
Assuming you have 3 microservices with a flow like Request → ServiceA → ServiceB → ServiceC. …
Getting into the world of Ethereum one of the learning curve has been about gas.
Gas is essentially how you track and then compute the cost you need to pay for the transaction you submit to the Etheruem network and is collected by the miners.
gasLimit, startGas, gasUsed, gasRemaining and gasPrice.
The fuel analogy is good but what helps me understand is the unit of measure for each.
I think of all these attributes except
gasPrice in the unit “cycle” (thinking about CPU cycles per instruction) while
gasPrice is “ETH/cycle”. …
All images credit: Shailee Dave
I have been involved in online payments for many years in large and small companies. As a backend services engineer it is usually device agnostic for me, but over the years the focus has changed from just web/browser and game consoles (Xbox/PlayStation) to also mobile phones and a whole bunch of connected experiences.
More recently I have had the opportunity to learn about point-of-sale (POS) systems in the physical world and bridge the gap. …
Large enterprise software groups are usually slower to adopt new tech. There are various legitimate reasons. There are usually years of investments in “legacy” systems and likely the internal rate of return calculations done in the years past for the various programs are still running their course. Also technology trends change quickly so adopting a fad is not wise either. Another important factor is the knowledge built into existing systems that is very expensive (both time and money) to recreate.
That said, microservices is a trend that is clearly gaining momentum in the enterprise, along with cloud deployment architectures. Enterprises are starting to explore microservices not to just increase agility, but also to stay current and attract the best talent. For mobile systems response time, scale and other metrics are also critical to maintain. Moreover, microservices is a familiar paradigm to enterprises, given its similarities to service-oriented architecture, making adoption easier. …
Saving tip for the future. To access your remote sever (DB server in this case) over a SSH tunnel, few steps needed:
1. Create/edit ~/.ssh/config
Add following to proxy all connections using the jump server to host foo
ProxyCommand ssh email@example.com exec nc %h %p 2> /dev/null
2. Create tunnel to target on port 3306 which will appear as 7777 on localhost
ssh -C -L
7777:target.remote.com:3306 firstname.lastname@example.org dstat 10
3. Use SQL developer/workbench to now connect to localhost 7777
foo and remote could be same or different server above.