TIL - 0507

[코드스쿼드 레벨3 과정 첫날] - 준비하기 과정에서 배운 것

자바

  • 객체지향에 대한 이해가 필요하고, 실제로 객체지향 프로그래밍할 줄 알아야해
  • API 사용은 해봤어야 필요할 때 뭘 쓸지 알 수 있지

Spring

  • 예전 같았으면 데이터를 어떻게 주고 받아야하는지에 대한 표준만을 가지고(CGI) 실제로 개발은 개발자가 다했었어야하지만, 지금은 다름! 그 다름을 느끼기 위해선 일정 시간의 노력이 필요함
  • Spring 진입장벽이 높았던 것을 Spring boot로 낮췄다는데, 이제부터 공부 시작!

웹 기본지식

  1. 웹의 탄생 : 어떠한 시스템(CPU, OS)이든지 간에 같은 문서를 주고 받아도 상관없도록 하기위해 만들어진 것(팀버너스리)
  2. HTTP : 시스템에 종속적이지않으면서 문서를 주고받기가 필요해서 만든 것이 웹인데, 리소스를 주고받기위해 고안된 약속이 바로 HTTP이다(메타데이터, 어떤 요청인지, 응답의 상태는 어떤지 등)
  3. URI : 서버에 요청을 할 때 어떤 것에 대한 요청인지 구분할 때 쓰임
  4. HTML : 주고 받는 문서의 양식이자 확장자명(정적인 문서 - 고정된 데이터)
  5. 웹서버와 웹어플리케이션서버 차이
    • 웹서버는 정적인 문서(.html)만 응답해줄 수 있었음 - 데이터 변경이 이뤄지지않음(어떤 사용자가 요청하더라도 같은 결과)
    • WAS의 등장으로 동적인 요청 결과를 응답할 수 있게됨 : 웹서버에서 바로 문서를 응답해주지않고, 요청에 맞게 문서를 구성하도록 WAS에 응답 구성을 위임
  6. CGI와 웹어플리케이션 프레임워크
    • CGI : 데이터를 어떻게 요청, 응답해야하는지(주고받기)에 대한 표준, 실제화 하는 것은 개발자의 몫(C언어 등으로 프로그램 만들기)
    • 웹어플리케이션 프레임워크 : 실제화를 해야하는 것은 맞지만 A-Z까지 모든 것을 직접 개발자가 만드는게 아니라 블록 쌓기하듯 미리 만들어져있는 유틸리티를 꺼내서 끼워맞추듯 흐름만 개발하면됨, CGI와 비교했을 때 굉장히 편리해진 개발(개발자의 입장)
  7. DB와 DBMS
    • DB는 데이터의 모음, DBMS는 그런 데이터 모음을 관리하는 시스템(mysql, oracle, db2, postgres 등)
    • DBMS CRUD : 기본적인 4가지 작업(Create, Retreival, Update, Delete - 생성하고 읽고 수정하고 삭제하는 작업)
    • DBMS JOIN : 각기 존재하는 테이블을 하나의 데이터로 묶어내기위한 오퍼레이션, 1:1(합칠 수 있는 데이터라면 하나의 테이블로 묶는 것이 더 나음)/ 1:N(작성자와 게시글)/ M:N 테이블(강좌와 학생, ) JOIN 관계가 존재
    • PK : primary key의 줄임말, 테이블 레코드를 각각 구분할 수 있는 키(key)
    • FK : foreign key의 줄임말, 레코드 중 관계를 맺는 테이블의 레코드를 식별하는 키(key) 컬럼
    • DBMS 속도에 대해서도 고민할 수 있어야함 : 쿼리만 날리면 되겠지가 아니라 어떻게 테이블을 구성하고, 쿼리를 짜냐에 따라 DBMS를 얼마나 효율적으로 다루는지가 갈리기때문에 고민해야한다 - 대표적으로 검색 작업을 위한 쿼리를 날릴 때 테이블 설계를 잘해둬야함(인덱스)
    • table column index : 검색 관련 오퍼레이션(join, select)을 수행할 때 풀스캔 하지않고 특정 컬럼을 따로 인덱싱해서 파일화해뒀다가 필요할때 해당 파일로 검색 작업을 함, 풀스캔( O(M*N) )에 비해 빠른 검색 작업을 할 수 있음, 무조건적으로 모든 컬럼을 인덱스하면 안됨(용량 낭비, 해보면서 느껴봐야함)
  8. ORM : 쿼리로 DBMS 작업을 하는게 아니라 테이블과 레코드를 객체와 매핑하여, 객체.메소드로 DBMS를 작업할 수 있게 만드는 기술(예로 JPA가 있음)

클라우드 서비스 - AWS

  • 물리적인 장치를 들여놓지않고, 일정 시간동안 서비스처럼 컴퓨터를 사용하는 것
  • 여러 국가에 개설되어있고 이를 리전이라 함, 서비스가 어느 국가에서 사용되냐에 따라 리전 선택이 달라짐
  • 같은 리전이라도 여러 군데에 만들어져있음 : 만약의 경우에 대비하여 서비스 중임
  • AWS IAM : 루트계정 아래 일부 사용 권한을 가진 계정 생성 후 AWS 서비스 이용
  • AWS EC2 : 서버컴퓨터로 사용할 인스턴스 만들기

할게 많다

  • 차근차근 조금씩 조금씩 해야겠다…..!