Forwarded from Книги для программистов
The DevOps Handbook (2016)
Авторы: Gene Kim, Jez Humble, Patric Debois, John Willis
Количество страниц: 600
Эффективное управление технологиями имеет решающее значение для конкурентоспособности бизнеса. На протяжении десятилетий технологические лидеры пытались найти баланс между гибкостью, надежностью и безопасностью. Последствия возможных сбоев еще никогда не были столь значительными - например, утечка данных о держателях карт или временная недоступность необходимого тысячам людей сервиса. В книге рассказывается, как объединять управление продуктами, разработку, контроль качества, ИТ-операции и информационную безопасность, чтобы повысить эффективность вашей компании и добиться успеха на рынке.
Достоинства:
➕Небольшой объем;
➕Практикоориентированность.
Недостатки:
➖Не замечено.
Скачать книгу
#english #book #advanced
Авторы: Gene Kim, Jez Humble, Patric Debois, John Willis
Количество страниц: 600
Эффективное управление технологиями имеет решающее значение для конкурентоспособности бизнеса. На протяжении десятилетий технологические лидеры пытались найти баланс между гибкостью, надежностью и безопасностью. Последствия возможных сбоев еще никогда не были столь значительными - например, утечка данных о держателях карт или временная недоступность необходимого тысячам людей сервиса. В книге рассказывается, как объединять управление продуктами, разработку, контроль качества, ИТ-операции и информационную безопасность, чтобы повысить эффективность вашей компании и добиться успеха на рынке.
Достоинства:
➕Небольшой объем;
➕Практикоориентированность.
Недостатки:
➖Не замечено.
Скачать книгу
#english #book #advanced
#agile #tech #stories
A very good article about writing useful backlog stories
https://dev.to/sirech/technical-stories-a-miscast-artifact-of-agile-development-3h8d
A very good article about writing useful backlog stories
https://dev.to/sirech/technical-stories-a-miscast-artifact-of-agile-development-3h8d
DEV Community
Technical stories, a miscast artifact of agile development
Technical stories are a controversial topic in the agile world. If you google technical stories antip...
Forwarded from Хабр
PostgreSQL Antipatterns: убираем медленные и ненужные сортировки
Разбираемся, когда сортировка в запросе точно не нужна и несёт с собой потерю производительности, когда от неё можно относительно дёшево избавиться, а когда сделать из нескольких — одну.
Разбираемся, когда сортировка в запросе точно не нужна и несёт с собой потерю производительности, когда от неё можно относительно дёшево избавиться, а когда сделать из нескольких — одну.
#diagrams #inCode
Sweet!
Create Beautiful Architecture Diagrams with Python
https://link.medium.com/y0yexY1jsab
Sweet!
Create Beautiful Architecture Diagrams with Python
https://link.medium.com/y0yexY1jsab
Medium
Create Beautiful Architecture Diagrams with Python
Stop spending time manually tweaking misaligned arrows
#System #Design #Study #Guide
Amazing study guide for systems design interviews
https://github.com/donnemartin/system-design-primer
Amazing study guide for systems design interviews
https://github.com/donnemartin/system-design-primer
GitHub
GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes…
Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. - donnemartin/system-design-primer
#gzip #compression
Bandwidth optimization
Web servers use gzip to reduce the total amount of data transferred to clients. When a browser with gzip support sends a request, it adds “gzip” to its Accept-Encoding header. When the web server receives the request, it generates the response as normal, then checks the Accept-Encoding header to determine how to encode the response. If the server supports gzip, it uses gzip to compress each resource. It then delivers the compressed copies of each resource with an added Content-Encoding header, specifying that the resource is encoded using gzip. The browser then decompresses the content into its original uncompressed version before rendering it to the user.
However, this comes at a cost. Compression is a CPU-intensive process, and the more you compress a file, the longer it takes. Because of this, gzip offers a range of compression levels from 1 to 9; 1 offers the fastest compression speed but at a lower ratio, and 9 offers the highest compression ratio but at a lower speed. The gzip application uses level 6 by default, favoring higher compression over speed. Nginx, on the other hand, uses level 1, favoring higher speeds over file size savings.
https://www.pingdom.com/blog/can-gzip-compression-really-improve-web-performance/
Bandwidth optimization
Web servers use gzip to reduce the total amount of data transferred to clients. When a browser with gzip support sends a request, it adds “gzip” to its Accept-Encoding header. When the web server receives the request, it generates the response as normal, then checks the Accept-Encoding header to determine how to encode the response. If the server supports gzip, it uses gzip to compress each resource. It then delivers the compressed copies of each resource with an added Content-Encoding header, specifying that the resource is encoded using gzip. The browser then decompresses the content into its original uncompressed version before rendering it to the user.
However, this comes at a cost. Compression is a CPU-intensive process, and the more you compress a file, the longer it takes. Because of this, gzip offers a range of compression levels from 1 to 9; 1 offers the fastest compression speed but at a lower ratio, and 9 offers the highest compression ratio but at a lower speed. The gzip application uses level 6 by default, favoring higher compression over speed. Nginx, on the other hand, uses level 1, favoring higher speeds over file size savings.
https://www.pingdom.com/blog/can-gzip-compression-really-improve-web-performance/
pingdom.com
Can gzip Compression Really Improve Web Performance? - Pingdom
We ran three different configurations to see if gzip compressed or uncompressed sites have the best page speed. Read our step-by-step how to gzip sites guide.
#python
This article series is a guide to modern Python tooling with a focus on simplicity and minimalism.1 It walks you through the creation of a complete and up-to-date Python project structure, with unit tests, static analysis, type-checking, documentation, and continuous integration and delivery.
Here is a list of the articles in this series:
Chapter 1: Setup (this article)
Chapter 2: Testing
Chapter 3: Linting
Chapter 4: Typing
Chapter 5: Documentation
Chapter 6: CI/CD
https://cjolowicz.github.io/posts/hypermodern-python-01-setup/
This article series is a guide to modern Python tooling with a focus on simplicity and minimalism.1 It walks you through the creation of a complete and up-to-date Python project structure, with unit tests, static analysis, type-checking, documentation, and continuous integration and delivery.
Here is a list of the articles in this series:
Chapter 1: Setup (this article)
Chapter 2: Testing
Chapter 3: Linting
Chapter 4: Typing
Chapter 5: Documentation
Chapter 6: CI/CD
https://cjolowicz.github.io/posts/hypermodern-python-01-setup/
Claudiojolowicz
Hypermodern Python
A guide to modern Python tooling with a focus on simplicity and minimalism.
#consistentHashing #cache
Removing a server results in its object keys being randomly reassigned to the rest of the servers, leaving all other keys untouched
https://www.toptal.com/big-data/consistent-hashing
Removing a server results in its object keys being randomly reassigned to the rest of the servers, leaving all other keys untouched
https://www.toptal.com/big-data/consistent-hashing
Toptal
A Guide to Consistent Hashing
Consistent Hashing is a distributed hashing scheme that operates independently of the number of servers or objects in a distributed hash table.
#indexing #postgres #sql
A good and short video about indexing:
https://www.youtube.com/watch?v=-qNSXK7s7_w
A good and short video about indexing:
https://www.youtube.com/watch?v=-qNSXK7s7_w
YouTube
Database Indexing Explained (with PostgreSQL)
Get my Fundamentals of Database Engineering udemy course to learn more , link redirects to udemy with coupon applied https://database.husseinnasser.com
This is a practical video on Database Indexing where I explain what is an index, why do we need it and…
This is a practical video on Database Indexing where I explain what is an index, why do we need it and…
#go #goroutines
Go uses goroutines while a language like Java uses threads.
The creation of a goroutine does not require much memory - only 2kB of stack space. They grow by allocating and freeing heap storage as required. Threads on the other hand start out at 1Mb (500 times more), along with a region of memory called a guard page that acts as a guard between one thread’s memory and another.
A server handling incoming requests can therefore create one goroutine per request without a problem, but one thread per request will eventually lead to the dreaded OutOfMemoryError. This isn’t limited to Java - any language that uses OS threads as the primary means of concurrency will face this issue.
Threads have significant setup and teardown costs because it has to request resources from the OS and return it once its done. The workaround to this problem is to maintain a pool of threads. In contrast, goroutines are created and destroyed by the runtime and those operations are pretty cheap. The language doesn’t support manual management of goroutines.
https://blog.nindalf.com/posts/how-goroutines-work/
Go uses goroutines while a language like Java uses threads.
The creation of a goroutine does not require much memory - only 2kB of stack space. They grow by allocating and freeing heap storage as required. Threads on the other hand start out at 1Mb (500 times more), along with a region of memory called a guard page that acts as a guard between one thread’s memory and another.
A server handling incoming requests can therefore create one goroutine per request without a problem, but one thread per request will eventually lead to the dreaded OutOfMemoryError. This isn’t limited to Java - any language that uses OS threads as the primary means of concurrency will face this issue.
Threads have significant setup and teardown costs because it has to request resources from the OS and return it once its done. The workaround to this problem is to maintain a pool of threads. In contrast, goroutines are created and destroyed by the runtime and those operations are pretty cheap. The language doesn’t support manual management of goroutines.
https://blog.nindalf.com/posts/how-goroutines-work/
Nindalf
How Goroutines Work
Krishna's personal blog
#go #architecture #microservice #banking
Brilliant talk about Go used in Banking (Monzo)
https://www.youtube.com/watch?v=y2j_TB3NsRc
Brilliant talk about Go used in Banking (Monzo)
https://www.youtube.com/watch?v=y2j_TB3NsRc
YouTube
Building a Bank with Go
Download the slides & audio at InfoQ: http://bit.ly/2wzwDMU
Matt Heath discusses why Go is suited for a microservices architecture, the language features that make it particularly attractive to high volume, low latency, distributed applications, and how…
Matt Heath discusses why Go is suited for a microservices architecture, the language features that make it particularly attractive to high volume, low latency, distributed applications, and how…
#DB #ACID #Video
So far the best explanation of ACID transactions. Highly recommend you to watch it if you have not worked with DBs before and do not know what this is.
This might also be useful if you prepare for an interview
https://www.youtube.com/watch?v=pomxJOFVcQs&list=PLQnljOFTspQXjD0HOzN7P2tgzu7scWpl2
So far the best explanation of ACID transactions. Highly recommend you to watch it if you have not worked with DBs before and do not know what this is.
This might also be useful if you prepare for an interview
https://www.youtube.com/watch?v=pomxJOFVcQs&list=PLQnljOFTspQXjD0HOzN7P2tgzu7scWpl2
YouTube
Relational Database ACID Transactions (Explained by Example)
ACID are four properties of relational databases, Atomocity, consistency, isolation and durability, and I think anyone working with a relational database like postgres, mysql, sqlserver oracle, should understand these properties. In this video, we will go…
#DB #Sharding
I am currently reading a lot about systems design for distributed systems. Data management is one of the most complex parts (at least for me, a person, who did not work with it much).
I looked through different "non-distributed" terms like indexing, views, materialised views. The other part is about partitilning/sharding,data replication, leader election algorithms, and how all that correlates with CAP theorem. One should carefully choose between relational and non-relational DBs.
In this article, it is written very well about scaling and sharding for relational DBs.
I highly recommend this, if you also struggle with the concept of Sharding for Relational DBs
Sharding with Amazon Relational Database Service | AWS Database Blog
https://aws.amazon.com/blogs/database/sharding-with-amazon-relational-database-service/
I am currently reading a lot about systems design for distributed systems. Data management is one of the most complex parts (at least for me, a person, who did not work with it much).
I looked through different "non-distributed" terms like indexing, views, materialised views. The other part is about partitilning/sharding,data replication, leader election algorithms, and how all that correlates with CAP theorem. One should carefully choose between relational and non-relational DBs.
In this article, it is written very well about scaling and sharding for relational DBs.
I highly recommend this, if you also struggle with the concept of Sharding for Relational DBs
Sharding with Amazon Relational Database Service | AWS Database Blog
https://aws.amazon.com/blogs/database/sharding-with-amazon-relational-database-service/
Amazon
Sharding with Amazon Relational Database Service | Amazon Web Services
Sharding, also known as horizontal partitioning, is a popular scale-out approach for relational databases. Amazon Relational Database Service (Amazon RDS) is a managed relational database service that provides great features to make sharding easy to use…
#gRPC
Крутой доклад по gRPC
- High Speed
- Language agnostic API and Definitions
- Two-ways communication
- Deadlines
- Cancellation Propagation
- Flow Control
https://www.youtube.com/watch?v=zPbaKUIcFx0
Крутой доклад по gRPC
- High Speed
- Language agnostic API and Definitions
- Two-ways communication
- Deadlines
- Cancellation Propagation
- Flow Control
https://www.youtube.com/watch?v=zPbaKUIcFx0
YouTube
Александр Борисов — Перенимаем опыт Google в построении микросервисов с gRPC
Подробнее о Java-конференциях:
— весной — JPoint: https://jrg.su/gTrwHx
— осенью — Joker: https://jrg.su/h7yvG4
— —
. . . . Микросервисная архитектура не обходится бесплатно, она значительно увеличивает количество удалённых вызовов. Это приводит к новым вызовам…
— весной — JPoint: https://jrg.su/gTrwHx
— осенью — Joker: https://jrg.su/h7yvG4
— —
. . . . Микросервисная архитектура не обходится бесплатно, она значительно увеличивает количество удалённых вызовов. Это приводит к новым вызовам…