roadmap.sh의 백엔드 개발자 로드맵 2022버전을 참고하여 공부한 것을 이 블로그에 정리하고자 글을 작성합니다.
인터넷에 대한 첫인상은 다음블로그였다.
HTTP는 무엇인가?
흔히 인터넷 검색을 하려면 구글을 사용한다.
DNS, 도메인 네임 시스템(Domain Name System)에 대해서 설명
도메인 네임과 호스트 네임은 무엇인가
웹 호스팅, 서버 호스팅, 클라우드 호스팅에 대하여 설명
웹 사이트는 크게 HTML, CSS, 자바스크립트 3가지로 구성되어 있다.
WEB1 - HTML & Internet
WEB1 - HTML & Internet
CSS의 기본 문법, Grid를 이용한 현대적인 레이아웃
JavaScript
WEB2 - JavaScript
운영체제는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어다.
Linux, git bash 터미널 사용법
운영체제는 컴퓨터 User와 컴퓨터 Hardware 사이의 인터페이스 역할을 한다.
프로세스
프로세스는 프로세스에 의해 만들어진다.
한정된 메모리를 다중 프로그래밍 환경에서 이용하기 위해서 여러 프로세스가 함께 메모리를 사용하게 되므로 효율적인 관리를 해야한다.
IPC는 프로세스들간에 서로 데이터를 주고받는 행위를 의미한다.
입출력 시스템
POSIX (Portable Operating System Interface)
네트워크 네트워크란 분산되어 있는 컴퓨터들을 자원이나 정보를 고유하기 위해 통신망으로 연결한 것 프로토콜을 사용하여 데이터를 교환하는 시스템의 집합 전송매체로 서로 연결된 시스템의 모음 네트워크 기초용어 시스템 내부 규칙에 따라 능동적으로 동작하는 대상 (컴퓨터, 자동차, 운영체제, 프로세스 등) 인터페이스 시스템과 시스템을 연결하기 위한 표준화된 ...
Git, GitKraken
PostgreSQL은 오픈소스 객체관계형 데이터베이스 시스템(ORDBMS)이다.
MySQL과 같은 SQL을 사용할지, MongoDB와 같은 NoSQL을 사용할지 어떻게 정할까?
MongoDB는 NoSQL로 Json type의 데이터 저장구조를 가진다.
영속성이란 영속성(Persistence)는 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말한다. 영속성을 갖지 않는 데이터는 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 사라진다. Object Persistence(영구적인 객체) 메모리 상의 데이터를 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용해 ...
트랜잭션(Transaction)은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업단위이다.
N+1은 JPA(Java Persistence API)를 사용하면서 연관관계를 맺는 엔티티를 사용한다면 한번 쯤 부딪힐 수 있는 문제이다.
데이터베이스 정규화는 데이터베이스의 설계를 재구성하는 테크닉이다.
Index
리플리케이션은 여러 개의 DB를 권한에 따라 수직적인 구조(Master-Slave)로 구축하는 방식이다.
Sharding은 데이터베이스를 조각으로 나누는 것이다.
CAP 이론
REST(Representational State Transfer)는 웹(HTTP)의 장점을 활용한 아키텍쳐이다.
Roy Fielding dissertation
JSON(Javascript Object Notation)은 경량의 DATA 교환형식이다.
gRPC는 구글에서 개발한 고성능 RPC 프레임워크이다.
OAuth
토큰 기반 인증 VS 서버(세션) 기반 인증
JWT는 JSON Web Token의 약자로 전자 서명된 URL-safe의 JSON이다
SOAP(Simple Object Access Protocol)
HATEOAS는 하이퍼미디어를 애플리케이션의 상태를 관리하기 위한 매커니즘으로 사용하는 것이다.
OAS, Swagger
Cookie HTTP는 Stateless이다. 서로 다른 두 Request 간에 정보나 데이터를 공유할 수 없다. 로그인을 요청하는 리퀘스트와 로그인해야만 볼 수 있는 정보를 요청하는 Request가 동시에 발생한다고 하자. 첫 번째 Request는 Response로 로그인이 완료되었다는 사실을 받겠지만, 두 번째 Request의 경우에 그 사실을 확인할 ...
최근에는 복잡한 절차없이 간단한 신상확인 만으로도 인터넷 서비스에 가입하는 일이 많다.
SAML(Security Asserting Markup Language)는 보안 인증에 관한 정보를 기술하는 마크업 언어이다.
CDN은 서버와 사용자 사이의 물리적인 거리를 줄여 컨텐츠 로딩에 소요되는 시간을 최소화한다.
Redis 대규모 서비스를 운영하기 위해 데이터를 안전하고 빠르게 저장하고 불러오는 기술이 필요해진다. 이런 상황에서 Redis를 고려할 수 있다. Redis는 시스템 메모리를 사용하는 key-value 데이터 스토어이다. 인 메모리 상태에서 데이터를 처리함으로써 흔히
Server Side와 Client Side
Hash는 크게 Hash, Hash functiong, Hashing, Hash table로 4가지로 나뉘어진다.
MD5와 SHA
패스워드를 안전하게 저장하는 방법엔 어느정도 정답이 나와있다.
SOP, CORS, CSP
HTTP, HTTPS
SSL과 TLS를 구분하기도 하지만, SSL을 참고하여 표준화한 것이 TLS이다.
OWASP
Unit test, Integration test, Functional test
SOLID와 DRY, YAGNI, KISS
CI, CD
TDD / DDD / BDD
Monolithic
마이크로 애플리케이션
SOA(Service Oriented Architecture)
Server + Less
CQRS는 물리 노드를 분리해 데이터 쓰기 및 읽기에 대한 책임을 분할한다.
Elasticsearch는 Apache Lucene 기반의 java 오픈소스 분산 검색 엔진이다.
Kafka(이벤트 브로커)와 RabbitMQ(메시지 브로커)
Docker
GraphQL은 API서버에서 엄격하게 정의된 endpoint들에 요청하는 대신 한 번의 요청으로 정확히 가져오고 싶은 데이터를 가져올 수 있게 쿼리를 보낼 수 있다.
마이그레이션 전략
Scale up Vs. Scale out
웹소켓 프로토콜