- 백엔드 플로우
- App/Web -> Auth -> API -> Webserver -> logging(elasticsearch), queue(kafka, rabbitMQ), file storage(S3)
- invariant: a condition that holds true(e.g., x > y).
- graceful(return) vs ungraceful(return exception)
- HTTP method: Put: 전체변경, Patch: 부분변경
- Get - recommended: SHOULD NOT use body (RFC7231, RFC9110.-Although%20request%20message%20framing%20is%20independent%20of%20the%20method%20used%2C%20contentHTTP%20communication%20are%20often%20unaware%20of%20intermediaries%20along%20the%20request%20chain.-%C2%B6))
- Authentication and authorisation
- Open Authorisation(OAuth2.0): It is a way for users to grant websites or applications access to their information without giving away their passwords.
- Flow: authorisation code → credentials → access token
- Client ↔ Authorisation Server: authorisation code
- Resource Owner ↔ Authorisation Server: credentials
- Client ↔ Authorisation Server: access token
- Atomicity
- two-phase commit (Coordinator), Saga pattern, (if shared DB) queryRunner, Message Queue
Problem: Special character(/, :) in URL, Solution: URL encoding
Problem: Many values in a request body are used to map function’s params, Solution: DTO + Pipes(filtering or validation + type check)
snake_case
kebab-case
PascalCase
calmelCase
무결성(integrity): 데이터의 정확성과 일관성을 유지하고 보증하는 것
기밀성(confidentiality): 인증된 사람에게만 데이터를 공개하는 것
부인방지(Non-Reputation): 송신자의 발신 부인을 불가
무상태(stateless): 서버가 클라이언트의 상태를 보존하지 않음
네트워크_신뢰성(Reliability): 네트워크에서 링크실패 등이 일어났을 경우에도 사용자가 이것을
느끼지 못하도록 서비스를 계속할 수 있는 능력
네트워크 상에서 error(fault or failure)가 발생했을 때
정상적인 상태로 돌아가는 능력
대역폭(bandwidth): 일정 시간 내에 데이터 연결을 통과할 수 있는 정보량의 척도
오버헤드(overhead): 특정 기능을 수행하는데 드는 간접(추가)적인 시간, 메모리 등 자원
상호운용성(interoperation): 시스템이 동일 또는 이기종의 다른 시스템과 아무런 제약 없이 서로 호환되어 사용할 수 있는 성질
인증성(authenticity): 신뢰할 수 있는 출처에서부터 온 것인지 확인할 수 있는 것
책임(accountability): 이유를 설명해줄 역할
Request payload