diff --git a/Content/20230717162224-concurrency.org b/Content/20230717162224-concurrency.org index 30117cd..895c584 100644 --- a/Content/20230717162224-concurrency.org +++ b/Content/20230717162224-concurrency.org @@ -6,3 +6,4 @@ * Major Flavors - [[id:3b44673f-5e7c-4b96-8ef2-1d68f5131173][Actor-Model Computation]] + - [[id:0458f827-5634-41e0-b261-dfc5cb2d2389][CSP: Communicating Sequential Processes]] diff --git a/Content/20230717162257-parallelism.org b/Content/20230717162257-parallelism.org index dd8555b..2e65218 100644 --- a/Content/20230717162257-parallelism.org +++ b/Content/20230717162257-parallelism.org @@ -4,3 +4,8 @@ #+title: Parallelism #+filetags: :programming: +Parallelism implies the simultaneous execution of multiple independent processes. + +[[id:618d0535-411d-4c36-b176-84413ec8bfc1][Concurrency]] describes the composition of independently executing processes : not saying anything regarding when these will be executed. + +Concurrency is not parallelism. diff --git a/Content/20230815212630-questions.org b/Content/20230815212630-questions.org index 998f07c..07975fa 100644 --- a/Content/20230815212630-questions.org +++ b/Content/20230815212630-questions.org @@ -12,3 +12,4 @@ ** [[id:cb550473-6804-4066-b492-0f007e6c2dd1][What is worth Learning?]] ** [[id:20231112T081124.213227][What-would-X-read?]] +** Why is fun not an eternal pursuit but something that comes up on and off? diff --git a/Content/20231227155636-development.org b/Content/20231227155636-development.org index 68935a5..059fd40 100644 --- a/Content/20231227155636-development.org +++ b/Content/20231227155636-development.org @@ -4,17 +4,33 @@ #+title: Software Engineering #+filetags: :meta:programming: -* Misc Concepts -** Application Dependencies - - conceptual generalizable example in the case of python - - https://www.fullstackpython.com/application-dependencies.html +* Misc Index +** Dependencies +:PROPERTIES: +:ID: 4a17f01a-8000-40d0-bf4d-46da6cdacc1d +:END: +Given a Dependency [[id:179b5b39-234a-4d0c-afde-c3b81409760c][Relationship]], like: +- A -> B -> C + #+begin_src lisp +(depends-on A + (depends-on B + C)) + #+end_src +- with "->" signifying "depends on" .. +- upstream and downstream helps relatively address dependencies. +- A is an upstream dependency of B +- B is an upstream dependency of C +- A is a [[id:40f40ce6-c25f-4076-ac32-b69dbb5a3b4a][transitive]] upstream dependency of C +- A (C) is the most (least) upstream dependency +- C (A) is the most (least) downstream dependency ** [[id:038e3720-0307-41d8-bcb1-e77b75a161df][Version Control]] ** [[id:54978664-78a5-4c2c-ae33-c4e6a14d6bb0][Microservices]] -* Practical Aspects ** Environments - Development - [[id:17d78466-2fcc-47aa-af20-9b74d94c96bb][Testing]] - Production -* Methodologies ** The Twelve Factor App +:PROPERTIES: +:ID: 7a450c24-000e-4262-8632-b07f8a4d1df9 +:END: - https://12factor.net/ diff --git a/Content/20240205171209-go.org b/Content/20240205171209-go.org index 989db80..5646214 100644 --- a/Content/20240205171209-go.org +++ b/Content/20240205171209-go.org @@ -4,10 +4,14 @@ #+title: Golang #+filetags: :golang: -* Basics -** Project Setup -*** Modules * Stream +** 0x22AB +- finished "Let's Go" +- will do "Let's Go Further sometime down the lane" +- getting into "Cloud Native Go" now though +- will soon start with open source contribs in the CNCF landscape +- The concurrency model of golang :[[id:0458f827-5634-41e0-b261-dfc5cb2d2389][CSP-Concurrency]] + ** 0x2273 - another book : software engineering in golang - another book : let's go @@ -19,7 +23,9 @@ ** 0x21E7 - starting out with go to get into cloud native applications and rewriting a product * Resources -** BOOK: building an orchestrator in golang +** BOOK: Building an orchestrator in golang :PROPERTIES: :ID: 3af62b5f-3c13-40c8-a912-18a94b7cb175 :END: + +** BOOK: Cloud Native Go diff --git a/Content/20240219144517-system_design.org b/Content/20240219144517-system_design.org index 6320b38..a2fa44c 100644 --- a/Content/20240219144517-system_design.org +++ b/Content/20240219144517-system_design.org @@ -4,12 +4,6 @@ #+title: System Design #+filetags: :cs: -* Quick Links -** Latency numbers every programmer should know -:PROPERTIES: -:ID: 2dca77bf-c105-407f-8afc-289716ea79d5 -:END: - - https://colin-scott.github.io/personal_website/research/interactive_latency.html * Abstract This node cluster references all the technicalities that go into designing a system - this should as a good rounded tour of the practical aspects of computer science. @@ -18,3 +12,53 @@ An important aspect of system design is to be able to handle all the users that System design is a problem oriented and not just limited to generical theoretical design patterns. +* Major Aspects +** Scalability +:PROPERTIES: +:ID: 56dbce77-b258-4fde-a6c7-f865e476c879 +:END: +- the ability of a system to continue to behave as expected in the face of significant upward or downward changes in demand. +*** Types +**** Vertical Scaling +- altering the hardware resources already allocated to a server. +- straightforward but limited extensibility +**** Horizontal Scaling +- altering the number of servers serving the application +- more complex but greater flexibility +*** Enablement +- have services with their state management decoupled from the act of serving. +- see [[id:a3d0278d-d7b7-47d8-956d-838b79396da7][Distributed Compute]] i.e. distributing state between service replicas. + +** Loose Coupling +:PROPERTIES: +:ID: adaf5bfa-48f9-415b-893e-7398b10f383e +:END: +- the system property and design strategy in which a system's components have minimal knowledge of any other components. +- internal changes to one don't demand changes in the other +- web servers and web browsers for instance are loosely coupled given both have certain guarantees. +*** Enablement +- Having a [[id:11d303f1-d337-4f51-b211-db435a9f2cd0][Protocol]] allows standardizing the input expectations and output assurances of a component. +- These may be addressed as [[id:11d303f1-d337-4f51-b211-db435a9f2cd0][Interfaces]] as well. +** Resilience +:PROPERTIES: +:ID: b24fb743-99bb-4e1a-b4a4-3b81c9677360 +:END: +- see [[id:20240519T162542.805560][fault tolerence]] +- the measure of how well a system withstands and recovers from errors and faults + +** Manageability +:PROPERTIES: +:ID: 2cd51b23-f253-40e2-8c5d-6f2924ca484d +:END: + - the ease with which a system's behaviour can be modified to keep it secure, running smoothly, and compliant with changing requirements. +** Observability +:PROPERTIES: +:ID: 3913909e-2b8d-465c-8303-5c634bd08f57 +:END: + - the measure of how well a system's internal states can be inferred from knowledge of its external outputs. +* Quick Links +** Latency numbers every programmer should know +:PROPERTIES: +:ID: 2dca77bf-c105-407f-8afc-289716ea79d5 +:END: + - https://colin-scott.github.io/personal_website/research/interactive_latency.html diff --git a/Content/20240219151152-protocol.org b/Content/20240219151152-protocol.org index 76ac65c..6ea0952 100644 --- a/Content/20240219151152-protocol.org +++ b/Content/20240219151152-protocol.org @@ -1,5 +1,6 @@ :PROPERTIES: :ID: 11d303f1-d337-4f51-b211-db435a9f2cd0 +:ROAM_ALIASES: Interface :END: #+title: Protocol #+filetags: :meta: diff --git a/Content/20240501193140-client_server_architecture.org b/Content/20240501193140-client_server_architecture.org index d2f4117..928d4a5 100644 --- a/Content/20240501193140-client_server_architecture.org +++ b/Content/20240501193140-client_server_architecture.org @@ -8,6 +8,14 @@ - Distributes the operation of an application in terms of the providers of the service i.e. [[id:bf1a5d71-d05c-4948-bf72-7991a1ed676c][Server]] (mostly a server farm) and the requesters of a service i.e. the clients (usually larger than the number of servers) - the transfer of requests and responses is done over a [[id:a4e712e1-a233-4173-91fa-4e145bd68769][Computer Network]] - Given the generic nature of the model described above, this gives rise to several abstractions needed to facilitate coms depending on several factors (scale, security, fault tolerance being some initial ones that come to mind) +* Basic Layers +** Presentation Tier +- end users operate via this +** Business Logic Tier +- Web + Application Servers go here +- These are clients to the Data Management tier +** Data Management Tier +- The [[id:2f67eca9-5076-4895-828f-de3655444ee2][Database]] Servers serve the business logic tier * Relevant Abstractions and notes - [[id:0d7c2dea-a250-4380-b826-ad4d2547d8d6][Load Balancing]] - [[id:7bff6f16-de9c-4c0d-a9a1-b27e3da6725f][Reverse Proxy]] diff --git a/Content/20240726181733-cloud_native.org b/Content/20240726181733-cloud_native.org index 0cbd9b3..aeae2f6 100644 --- a/Content/20240726181733-cloud_native.org +++ b/Content/20240726181733-cloud_native.org @@ -12,14 +12,20 @@ Cloud native refers to designing, developing, and operating applications that op The Projects sub-node in here hosts an index into tooling that I've enqueued for exploration. -* Canonical Layers to Cloud-Native -*** Provisioning -*** Runtime -*** Orchestration and Management -*** App Definition and Development -* Ancillary Pillars to Cloud-Native -*** Observability and Analysis -*** Platform + All the major practical components of the cloud native landscape (as of 0x22AB) are being developed in [[id:ad4ba668-b2ec-47b1-9214-2284aedaceba][Golang]] : initializing exploration of the same directed towards my intentions of contributing competently in the CNCF landscape. + +* The Path to Cloud Native +- The primary incentive so far pushing the evolution of computing services has been the pressure to [[id:56dbce77-b258-4fde-a6c7-f865e476c879][scale]]. +- 1950s : about the [[id:b72d3ca3-53fa-4a97-964f-cbc1a8d612a4][mainframe]] computer with all the [[id:a8cbf516-055a-4ef7-9afe-7a780bda52ab][logic]] and [[id:d45dae92-5148-4220-b8dd-e4da80674053][data]] residing together as one [[id:5be3075a-d718-4f44-b031-4df5547423a2][monolith]]. +- 1980s : [[id:a4e712e1-a233-4173-91fa-4e145bd68769][networks]] of personal computers encouraged some changes. Some application logic could be off-loaded to these PCs (partioning into the [[id:e944d11b-ba53-4dc1-aee9-3793f59be8ac][Client-Server Architecture]]) : the first major move towards decoupled services. +- 1990s : the dotcom rush led to explosion of (SaaS) [[id:cbcb26f4-dd24-4f59-8003-25573a7cd034][Software as a Service]]. The associated logistics of operating (develop, deploy, maintain) such a service began to get complex. This further encouraged the decoupling of the business layer in the Client Server architecture into multiple [[id:54978664-78a5-4c2c-ae33-c4e6a14d6bb0][Microservices]]. +- 2000s : AWS popularized (IaaS) [[id:de6e9e57-6ba8-4d37-8e62-1a2c2327b275][Infrastructure as a Service]] : yielding the initiation of the term [[id:bc1cc0cf-5e6a-4fee-b9a5-16533730020a][Cloud Computing]]. +* Important Terms (checkout [[id:314236f7-81ae-48b7-b62b-dc822119180e][System Design]]) +** [[id:56dbce77-b258-4fde-a6c7-f865e476c879][Scalability]] +** [[id:adaf5bfa-48f9-415b-893e-7398b10f383e][Loose Coupling]] +** [[id:b24fb743-99bb-4e1a-b4a4-3b81c9677360][Resilience]] +** [[id:2cd51b23-f253-40e2-8c5d-6f2924ca484d][Manageability]] +** [[id:3913909e-2b8d-465c-8303-5c634bd08f57][Observability]] * CNCF (Cloud Native Computing Foundation) :PROPERTIES: :ID: 56e931a4-16af-4eba-bcd0-c8f0b9566153 @@ -35,8 +41,16 @@ The CNCF is a vendor-neutral open source community that fosters the adoption and - [[id:58ea31e4-95ae-4c25-b475-c8686fe23817][Automated]]: Infrastructures and pipelines are managed declaratively and automated. -* Projects -** [[id:58ea31e4-95ae-4c25-b475-c8686fe23817][Devops]] +** Canonical Layers to Cloud-Native +**** Provisioning +**** Runtime +**** Orchestration and Management +**** App Definition and Development +** Ancillary Pillars to Cloud-Native +**** Observability and Analysis +**** Platform +** Projects +*** [[id:58ea31e4-95ae-4c25-b475-c8686fe23817][Devops]] |------------+--------------------------| | Project | Utility | |------------+--------------------------| @@ -46,14 +60,14 @@ The CNCF is a vendor-neutral open source community that fosters the adoption and | [[id:c50c85ac-0b21-486f-99ac-00f325e2c43c][KEDA]] | AutoScaling | | [[id:c2072565-787a-4cea-9894-60fad254f61d][Kubernetes]] | Orchestration | |------------+--------------------------| -** Compute +*** Compute |------------+-------------------| | Project | Utility | |------------+-------------------| | [[id:2e953b92-6b7c-46ce-aa31-f278601ab005][Containerd]] | Container Runtime | | [[id:320016f3-53be-4756-b9b8-3a89714ff1d9][cri-o]] | Container Runtime | |------------+-------------------| -** Storage +*** Storage |---------+---------------------------| | Project | Utility | |---------+---------------------------| @@ -61,7 +75,7 @@ The CNCF is a vendor-neutral open source community that fosters the adoption and | [[id:63dbe80a-9503-470f-94f7-af72190f35db][TiKV]] | distributed key-val store | | [[id:731a8c2c-da51-419b-8224-774913c597e6][Vitess]] | Scalable Relational DB | |---------+---------------------------| -** [[id:a4e712e1-a233-4173-91fa-4e145bd68769][Networking]] +*** [[id:a4e712e1-a233-4173-91fa-4e145bd68769][Networking]] |---------+----------------------| | Project | Utility | |---------+----------------------| @@ -72,7 +86,7 @@ The CNCF is a vendor-neutral open source community that fosters the adoption and | [[id:2f89e95e-9bfa-4762-a5f1-b1caae1f364b][lstio]] | Service Mesh | | [[id:bb7b9374-8773-45f5-992d-c969d7cbded2][LinkerD]] | Service Mesh | |---------+----------------------| -** Security +*** Security |-------------------+------------------------| | Project | Utility | |-------------------+------------------------| @@ -82,7 +96,7 @@ The CNCF is a vendor-neutral open source community that fosters the adoption and | [[id:c96bc90b-0f7e-4943-803e-916fcd036c19][Spire]] | Key Management | | [[id:a1a26817-85fe-481b-b41e-659502094361][TUF]] | Update System Security | |-------------------+------------------------| -** Meta +*** Meta |------------+---------------------| | Project | Utility | |------------+---------------------| diff --git a/Content/20240819102721-mainframe.org b/Content/20240819102721-mainframe.org new file mode 100644 index 0000000..ddce847 --- /dev/null +++ b/Content/20240819102721-mainframe.org @@ -0,0 +1,5 @@ +:PROPERTIES: +:ID: b72d3ca3-53fa-4a97-964f-cbc1a8d612a4 +:END: +#+title: MainFrame +#+filetags: :computer: diff --git a/Content/20240819102849-monolith.org b/Content/20240819102849-monolith.org new file mode 100644 index 0000000..833f7b3 --- /dev/null +++ b/Content/20240819102849-monolith.org @@ -0,0 +1,5 @@ +:PROPERTIES: +:ID: 5be3075a-d718-4f44-b031-4df5547423a2 +:END: +#+title: Monolith +#+filetags: :cs: diff --git a/Content/20240819105506-relationship.org b/Content/20240819105506-relationship.org new file mode 100644 index 0000000..8f4c07f --- /dev/null +++ b/Content/20240819105506-relationship.org @@ -0,0 +1,27 @@ +:PROPERTIES: +:ID: 179b5b39-234a-4d0c-afde-c3b81409760c +:END: +#+title: Relations +#+filetags: :math: + +* Properties +** Transitivity +:PROPERTIES: +:ID: 40f40ce6-c25f-4076-ac32-b69dbb5a3b4a +:END: +** Associativity +:PROPERTIES: +:ID: 366f45b6-1942-431b-9e16-7951634ca39e +:END: +** Reflexivity +:PROPERTIES: +:ID: 0c0dbaf8-46aa-4dd6-890f-b14ea4b34b8d +:END: +** Symmetry +:PROPERTIES: +:ID: 66aded20-c17c-49d8-b30f-a08a8fce4ffd +:END: +** AntiSymmetry +:PROPERTIES: +:ID: 56422537-b8a0-4f45-8837-5698bd105c2a +:END: diff --git a/Content/20240819120650-csp_concurrency.org b/Content/20240819120650-csp_concurrency.org new file mode 100644 index 0000000..297ab8e --- /dev/null +++ b/Content/20240819120650-csp_concurrency.org @@ -0,0 +1,10 @@ +:PROPERTIES: +:ID: 0458f827-5634-41e0-b261-dfc5cb2d2389 +:ROAM_ALIASES: "Communicating Sequential Processes" +:END: +#+title: CSP-Concurrency +#+filetags: :golang:programming: + +* Resources +- https://en.wikipedia.org/wiki/Communicating_sequential_processes +- http://www.usingcsp.com/cspbook.pdf