Giter VIP home page Giter VIP logo

developer-knowledge's Introduction

Useful knowledge for the backend software developer

Table of Contents

Introduction

Here is my knowledge for backend software developer. Please use it.

Algorithms and Data Structure

Structure Data

DFS

BFS

Sliding Window

Tree

LinkedList

HashMap

complexity

sorting

Languages

Language of development in the most starting point of software development. There are huge number of languages. They have different properties like syntax, on which operation system it works, or on which hardware it works.

java

It's one of the most popular languages for software development. The most rival feature is build once then run anywhere. Java compiler creates byte code from source code. This byte code looks like machine code, i.e. instructions for the processors, but there are no physical processor, in runs on Java Virtual Machine, that exists for almost any popular Operation System(Windows, Linux).

Other things that make it's so popular - the huge number of libraries and technologies with java could be used.

scala

Version Control

Databases

In order to store files you could use files, think about format, solve issues with multiple using. And other things, but it's better to use ready for this products for storing - databases. It's considered that NoSQL databases could be horizontally scaled, SQL only vertically.

Relational database

Non-relational(NoSQL)

key-value

  • redis
  • memcache

document

  • mongodb

columns

  • cassandra

graph

  • neo4j

search

  • elastic
  • solr

Interactive Development Environment

Integrated development environment is software that gives you possibility to write code easily. Literally they help you to do it.

Intelij DEA

Eclipse

Frameworks

  • Spring, beans, DI/IC

Streaming

Observability

  • SLO/SLI/SLA
  • latency/throughput
  • opentracing jaeger
  • monitoring
  • grafana
  • kibana

Microservices

microservices vs monolith

  • you need good reason to use microservices
  • in monolith hard to establish borders between components, all the teams work in should use the same libraries
  • by microservices you could split on independent supported by separate teams

Docker

Lightweight version of virtual machine, but it doesn't. It works at first on linux, on windows it just started to be implemented. Main idea it uses core of the linux, because it's stable enough and create isolate environment from other processes.

Kubernetes

Orchestration for a lot of services. Uses pods as minimal thing. On Pods could be several container, but usually one. Type of services:

  • Stateful
  • Stateless

Openshift

Red Had implementation that uses Kubernetes under the hood. It includes UI, aggregated command line, images stores and other features.

service mesh

Embedded proxy

Proxy as a library. Hard to implement because for each different language required their own library. But fastest.

Sidecar proxy

Proxy that started near service, e.g. on the same pod. Service sends request to sidecard proxy, then proxy reroute it.

Envoy

Sidecar proxy written on C++. Supports http, http2, grpc, databases connections. Could also be used as edge proxy.

Istio

Control for traffic, secure, rules, circuit braking.

Edge proxy

Proxy before service mesh, something like reverse proxy.

Service communications

gRPC

uses two main things:

  • protobuf
  • http/2

Protobuf is way for describe api. http2 use the same channel for bidirectional requests.

built in features:

  • timeouts, you could always set timeouts in the request

rest, soap, ..

http2

webservice...

balancer

In order to spread workload more equally between services balancer could be used

  • ssl, tls, ...

Balancer

L4/L7

In general balancer could be divided in two groups: L4 and L7, which connected to the level of OSI model where they used.

L4 on the transport layer, i.e. TCP level. Mostly such balancer are hardware. It doesn't know anything of context of traffic it knows only source and destination, but there are features like ssl that hardly could be fit only in L4 model.

L7 balance relies on application layer so, they could decide balancing strategy based on the traffic.

Proxy

If you want to hide client from server you use proxy.

Reverse proxy

If you want to hide server from client, you use reverse proxy. In some situation reverse proxy could be general case for balancer.

Network

OSI model

OSI(Open Systems Interconnection Model) conceptual model that shows the levels of system interaction.

Continuous Integration

Helps to automate building

Architecture

Responsibilities

  • architecture, provides pros and cons
  • writing info about features, discussion on it
  • understand domain
  • communications

Tools

  • Confluence
  • Bugtracking - jira
  • plantUML

Methodology of Development

  • Agile
  • Waterfall

developer-knowledge's People

Contributors

oleg-sta avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.