<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Topics on Tech Foundations</title><link>https://valery.tech/engineering/topics/</link><description>Recent content in Topics on Tech Foundations</description><generator>Hugo</generator><language>en-US</language><copyright>Copyright (c) 2014-2023</copyright><atom:link href="https://valery.tech/engineering/topics/index.xml" rel="self" type="application/rss+xml"/><item><title>Api</title><link>https://valery.tech/engineering/topics/api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://valery.tech/engineering/topics/api/</guid><description>&lt;h1 id="actions"&gt;Actions&lt;/h1&gt;
&lt;p&gt;find out info about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API Design principles, API evolution, its usage as interface of a system&lt;/li&gt;
&lt;li&gt;what is API (fringe, interface, algebra etc) #sd #todo&lt;/li&gt;
&lt;li&gt;protocol vs API vs SLA vs Algebra ?? #engineering&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;maybe add terms from hexagonal architecture style&lt;/p&gt;</description></item><item><title>Caching</title><link>https://valery.tech/engineering/topics/caching/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://valery.tech/engineering/topics/caching/</guid><description>&lt;h1 id="ontology"&gt;ontology&lt;/h1&gt;
&lt;p&gt;Cache definitions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Caching is a commonly used &lt;em&gt;performance optimization&lt;/em&gt; (&amp;lt;= really important that it is an optimization) whereby the previous result of some operation is stored so that subsequent requests can use this stored value rather than spending time and resources recalculating the value.&lt;/li&gt;
&lt;li&gt;In computing, a cache is a component that stores data so that future requests for that data can be served faster; the data stored in a cache might be the result of an earlier computation or a copy of data stored elsewhere.&lt;/li&gt;
&lt;li&gt;Structurally, cache can be viewed as a high-speed storage layer that sits between the application and the original source of the data, such as a database, a file system, or a remote web service.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;As locigal layer:&lt;/em&gt; in computing, a cache is a high-speed data storage layer which stores a subset of data, typically transient in nature, so that future requests for that data are served up faster than is possible by accessing the data&amp;rsquo;s primary storage location.&lt;/p&gt;</description></item><item><title>Cassandra</title><link>https://valery.tech/engineering/topics/cassandra/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://valery.tech/engineering/topics/cassandra/</guid><description>&lt;p&gt;But as we&amp;rsquo;ll see later, scaling data stores means making certain trade-offs among data consistency, node availability, and partition tolerance. Cassandra is frequently called &amp;ldquo;eventually consistent,&amp;rdquo; which is a bit misleading. Out of the box, Cassandra trades some consistency in order to achieve total availability. But Cassandra is more accurately termed &amp;ldquo;tuneably consistent,&amp;rdquo; which means it allows you to easily decide the&lt;/p&gt;</description></item><item><title>Communication</title><link>https://valery.tech/engineering/topics/communication/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://valery.tech/engineering/topics/communication/</guid><description>&lt;h1 id="common"&gt;Common&lt;/h1&gt;
&lt;p&gt;Getting communication between microservices right is problematic for many due in great part, I feel, to the fact that people gravitate toward a chosen technological approach without first considering the different types of communication they might want. In this chapter, I&amp;rsquo;ll try and tease apart the different styles of communication to help you understand the pros and cons of each, as well as which approach will best fit your problem space.&lt;/p&gt;</description></item><item><title>Deployment</title><link>https://valery.tech/engineering/topics/deployment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://valery.tech/engineering/topics/deployment/</guid><description>&lt;p&gt;Definition:&lt;/p&gt;
&lt;p&gt;Software deployment is the process of making software available for use on a system by users and other programs.&lt;/p&gt;</description></item><item><title>Distributed Systems</title><link>https://valery.tech/engineering/topics/distributed-systems/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://valery.tech/engineering/topics/distributed-systems/</guid><description>&lt;h1 id="sources"&gt;Sources&lt;/h1&gt;
&lt;p&gt;&amp;ldquo;Distributed Systems&amp;rdquo; course by csprimer.com &amp;lt;- interesting videos&lt;/p&gt;
&lt;p&gt;distributed:&lt;/p&gt;
&lt;p&gt;book &amp;ldquo;thinking in distributed systems&amp;rdquo;&lt;/p&gt;
&lt;p&gt;book &amp;ldquo;understanding distributed systems&amp;rdquo;&lt;/p&gt;
&lt;p&gt;book &amp;ldquo;Think Distributed Systems&amp;rdquo; (meap)&lt;/p&gt;</description></item><item><title>Dynamodb</title><link>https://valery.tech/engineering/topics/dynamodb/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://valery.tech/engineering/topics/dynamodb/</guid><description>&lt;h1 id="differences-between-relational-data-design-and-nosql"&gt;Differences between relational data design and NoSQL&lt;/h1&gt;
&lt;p&gt;Relational database systems (RDBMS) and NoSQL databases have different strengths and weaknesses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In RDBMS, data can be queried flexibly, but queries are relatively expensive and don&amp;rsquo;t scale well in high-traffic situations (see &lt;a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-modeling-nosql.html"&gt;First steps for modeling relational data in DynamoDB&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;In a NoSQL database such as DynamoDB, data can be queried efficiently in a limited number of ways, outside of which queries can be expensive and slow.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These differences make database design different between the two systems:&lt;/p&gt;</description></item><item><title>Eda</title><link>https://valery.tech/engineering/topics/eda/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://valery.tech/engineering/topics/eda/</guid><description>&lt;h2 id="eda"&gt;EDA&lt;/h2&gt;
&lt;p&gt;Event Pub/Sub support &lt;a href="https://trueaccord.atlassian.net/wiki/x/WwDSZQ"&gt;trueaccord.atlassian.net/wiki/x/WwDSZQ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Event-driven_architecture"&gt;https://en.wikipedia.org/wiki/Event-driven_architecture&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/event-driven"&gt;https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/event-driven&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;resources collection fyi&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/lutzh/awesome-event-driven-architecture"&gt;https://github.com/lutzh/awesome-event-driven-architecture&lt;/a&gt; (also some papers links)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/mehdihadeli/awesome-software-architecture/blob/main/docs/event-driven-architecture.md"&gt;https://github.com/mehdihadeli/awesome-software-architecture/blob/main/docs/event-driven-architecture.md&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;courses&lt;/p&gt;
&lt;p&gt;&lt;a href="https://developer.confluent.io/courses/"&gt;https://developer.confluent.io/courses/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://developer.confluent.io/courses/event-design/intro/"&gt;https://developer.confluent.io/courses/event-design/intro/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;blogs&lt;/p&gt;
&lt;p&gt;&lt;a href="https://event-driven.io/en/category/"&gt;https://event-driven.io/en/category/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Envelope Estimations</title><link>https://valery.tech/engineering/topics/envelope-estimations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://valery.tech/engineering/topics/envelope-estimations/</guid><description>&lt;h1 id="sources"&gt;Sources&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://www.hellointerview.com/blog/mastering-estimation"&gt;https://www.hellointerview.com/blog/mastering-estimation&lt;/a&gt; #todo&lt;/p&gt;
&lt;h1 id="how-to-do-it"&gt;How to do it&lt;/h1&gt;
&lt;p&gt;According to Jeff Dean, Google Senior Fellow, &amp;ldquo;back-of-the-envelope calculations are estimates you create using a combination of thought experiments and common performance numbers to get a good feel for which designs will meet your requirements&amp;rdquo;&lt;/p&gt;</description></item><item><title>Hashing</title><link>https://valery.tech/engineering/topics/hashing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://valery.tech/engineering/topics/hashing/</guid><description>&lt;h1 id="hasning-strategies"&gt;Hasning strategies&lt;/h1&gt;
&lt;h2 id="rendezvous-hashing"&gt;Rendezvous Hashing&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://randorithms.com/2020/12/26/rendezvous-hashing.html"&gt;https://randorithms.com/2020/12/26/rendezvous-hashing.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Rendezvous hashing - rank server set.&lt;/p&gt;
&lt;h2 id="consistent-hashing"&gt;Consistent Hashing&lt;/h2&gt;
&lt;p&gt;Consistent hashing is a way to effectively distribute the keys in any distributed storage system &amp;ndash; cache, database, or otherwise &amp;ndash; to a large number of nodes or servers while allowing us to add or remove nodes without incurring a large performance hit.&lt;/p&gt;</description></item></channel></rss>