도커
- 도커는 컨테이너 기반의 가상화 플랫폼.
- vm ware는 무겁기 때문에 docker를 많이 사용한다.
- 서비스 운영에 필요한 서버 프로그램, 코드 및 라이브러리, 컴파일된 실행 파일 등을 묶는 형태를 도커 이미지라고 한다. 즉 컨테이너 생성(실행)에 필요한 모든 파일과 환경을 가진 것.
ex) 우분투 이미지는 우분투를 실행하기 위한 모든 파일과 dependency 들을 포함한다.
- 도커 이미지를 실행하면 도커 컨테이너가 된다고 볼 수 있다.
서버
- netstat
현재 서버가 다른 시스템과 어떤 서비스/포트로 연결되어 있는지 확인하는 명령어
- netstat -an
연결되었던/연결을 기다리는 목록을 아이피 주소로 바꾸어서 보여줌
- 서버 주소/hello-world 로 서버가 죽어있는지 확인한다.
graphQL
- 유연하게 확장하기 위해 사용
- Restful API 는 형태와 데이터 요청 방법이 연결되어 있으나, graphQL은 완전히 분리되어 있음.
- REST는 리소스 형태와 크기를 서버에서 결정하나 graphQL은 클라이언트 단에서 요청시 결정한다.
- REST는 여러 리소스에 접근 시 여러 번 요청을 하나 graphQL은 한번의 요청을 한다.
React
- React DOM은 JSX에 삽입된 모든 값을 렌더링하기 전에 이스케이프 하므로, 애플리케이션에서 명시적으로 작성되지 않은 내용은 주입되지 않는다. 모든 항목은 렌더링 되기 전에 문자열로 변환된다. 이런 특성으로 인해 XSS 공격을 방지할 수 있다.
- strictMode에서 useEffect의 double call 특성 : 개발시에만 활성화 되고 실제 프로덕션 빌드 할 때는 알아서 꺼진다. 이 모드에서는 컴포넌트를 2번씩 렌더링해서 deprecated된 생명주기 메서드의 사용, 예상치 못한 부작용, 레거시 문자열 ref 등을 확인하는 용도로 사용된다. 개발 과정에서 잠재적인 문제를 조기에 발견하고 수정하는 용도로 사용된다.
웹 성능 최적화
- 이미지 최적화
- 리소스 압축
- 렌더링 최적화
- CDN 사용
- 캐시 설정
각 언어별 프레임워크
- Python: Django, Flask
- Node.js: Express.js, Nest.js
- Java: Spring, Spring Boot
- Ruby: Ruby on Rail
- Golang: Gin