✏️ 인터넷? 웹?
인터넷 : INTER+NET 네트워크끼리 연결된것
웹 : 인터넷 안에서 HTTP 프로토콜로 데이터를 주고받는것 + HTML 문서를 주고받는 특징이 있다.
✏️ Client? Server?
클라이언트 : 요청을 보내는 입장
서버 : 요청을 처리하는 입장
노트북은 클라이언트/서버 둘다 될 수 있지만 일반적으로 많은 클라이언트를 처리하기에는 서버로서 사양이 무리가 있다.
웹 클라이언트 :
Http 프로토콜 기반으로 요청을 보내는 쪽
웹 서버 :
Http 프로토콜 기반으로 요청을 처리하는 쪽
예시 :
웹 : 요청->응답->연결끊김 / 요청할때마다 화면이 계속 리프래시 된다. 필요한 모든 정보를 다 보내야 하는 특징이 있다.
카카오톡 : 서버와 계속 연결되어있다, 새로운 내용만 보낸다.
✏️ Front? Back?
Front와 Back의 차이 : 어디서 실행되느냐의 차이. Front는 클라이언트 컴퓨터, Back은 서버 컴퓨터에서 실행된다.
Front : 코드는 서버가 갖고있지만 (HTML, CSS, JS) 클라이언트가 요청하면 서버가 코드를 복사하여 클라이언트에 전달하여 클라이언트에서 실행된다.
Back : JAVA, SPRING, NODE.JS는 요청받으면 해당 언어로 작성된 프로그램과 연결되어 있어 서버에서 실행이 된다.
✏️ 웹의 장점 : 브라우저 자체에서 표준에 맞게 작성된 HTML, CSS, JS와 같은 언어를 기계어로 번역(인터프리터)해준다. 즉, 클라이언트에 설치가 필요없고 웹브라우저만 있으면 뭐든 작동된다. 유지보수성이 좋다.
✏️ 프로그램 : 일의 절차
컴퓨터 프로그램 : 컴퓨터가 해야할 일의 절차를 컴퓨터 프로그램 언어로 작성된 것.
✏️ 클라우드 키워드 : 인터넷, 온디멘드, 종량요금제 + Infra as a code(DevOps 걸림돌 해결-소스배포(개발-운영) 수동운영)
IT 리소스를 인터넷으로 요청하여 즉시 사용가능하며 사용한만큼 요금을 지불한다.
인프라(네트워크/서버/스토리지) 구성, 플랫폼 설치 등 자동으로 관리하게끔 코드로 작성하는것이 Infra as a code이다.
✏️ 데이터 : 말 그대로 우리가 흔히 아는 데이터를 말한다. 사원 테이블의 이름, 나이 등의 데이터를 의미한다.
메타데이터 : 데이터의 데이터를 말한다. 예를들어 테이블에 대한 컬럼정보, 테이블명 등 구조에 대한 내용을 의미한다.
✏️ 아키텍처? 설계?
아키텍처 : 기본설계에 가깝다. 큰 틀을 잡는 작업을 말한다.
설계 : 기본설계와 상세설계로 나뉜다.
좋은 아키텍처란? 목표품질을 달성할 수 있는 아키텍처다. (비용, 유지보수, 성능, 기능, 신뢰성, 효율성, 이식성, 보안 등)
✏️ 공학? 과학?
과학 : 진짜? 가짜? 어떤게 진실이냐가 중요
공학 : 비용이 중요하다. 목표를 이루기 위해 비용을 낮추면서 품질을 높이고 일정을 단축할 수 있어야 한다.
✏️ 아키텍처 스타일/패턴? 디자인패턴?
공통점 : 설계 노하우
아키텍처 스타일/ 패턴 : MSA, n-tier, layer, MVC, c-s // 문제영역이 시스템 전체이다. 품질(보안,성능,유지보수성,비용)에 영향을 준다.
디자인패턴 : singleton, factory method // 해결하고자하는 문제영역이 매우 작으며 일부분이다.
✏️ 설계원칙
1. 분할과 정복
2. 약결합
✏️ Framework? Library? 주체가 다르다.
Framework : spring, Django, flask... 기존 뼈대(fw)에 내가 살을 붙임, fw가 나를 호출
Library : jQuery, React... 내가 필요에 따라 라이브러리를 호출