[우아한테크코스] 3월 11일 TIL

1 minute read

오늘 배운 것

  1. 블랙잭 상태 패턴 재적용
  2. 테코톡
  3. 모던 자바 인 액션 9장

테코톡

  1. Web 요청과 응답과정
    • 인터넷: 컴퓨터 네트워크들을 연결시켜주는 범지구적 네트워크
    • LAN: 근거리 통신망, 가까운 지역을 묶는 네트워크
    • 웹: 인터넷 중에서 동작하는 서비스 중 하나로, 정보의 공유를 위해 존재, 수많은 요청과 응답 사이클의 연속으로 이루어짐
    • 서버: 정보 제공
    • 클라이언트: 정보 사용
    • HTTP: 클라이언트와 서버 사이의 약속(비연결성)
    • GET
    • POST
    • PUT
    • DELETE
    • HEAD
    • PATCH
    • OPTIONS
      • 웹 요청과 응답과정
  2. Uniform Resource locator: 네트워크상 자원의 위치
    • Uniform Resource Identifier: 정보 리소스를 고유하게 식별하고 위치를 지정
    • Uniform Resource Name: 리소스 위치에 무관한 유일한 이름
  3. 요청을 서버로 전송(HTTP Request)
  4. 서버가 클라이언트로부터 요청 받고 처리
  5. 서버가 클라이이언트에게 응답
  6. 클라이언트가 응답 받고 필요한 리소스 추가 요청, 응답 받기
  7. 렌더링을 통해 화면에 뿌려줌
  8. 사용자 확인

빌드와 배포

  1. 컴파일
    소스 코드를 바이너리 코드로 변경하는 과정 Java의 경우 class까지
    JVM: java byte code를 os에 맞게 실행하는 것
  2. 빌드
    컴파일 -> 링크 -> 패키징 -> 테스트를 거쳐 jar와 war로 산출
    jar: war:
  3. 빌드 도구
    ant: xml 형식, 자유도 높음, 절차적, 스크립트 직접 명시
    maven: pox.xml, 전체 프로젝트 관리, 표준화된 빌드 스크립트, 속도 빠름, 읜존성 추가 편리
    gradle: ant+maven, groovy 기반 작성, 자바 문법과 유사, 재사용이 용이
    • settings.gradle:
    • build.gradle: 프로젝트 빌드 정보 및 구성 표현
    • .gradlew, .gradle.bt: gradle이 설치되어 있지 않아도 빌드 가능
  4. 배포
    jar, war로 사용자가 사용할 수 있도록 소프트웨어를 제공하는 것
  5. CI
    마지막 프로젝트 합치면 integration hell, 중간 합치면 지속적으로 시간 소모
    CI: 지속적 통합, 변경사항마다 자동으로 빌드, 테스트하고 보고까지하는 것
    충돌 수정이 쉽고, 최신 상태로 유지, 테스트 원활하게 수행
    • Travis: 깃헙 연계 굿, 클라우드 기반
    • Jenkins: 다양한 IDE, 커스터마이징, 서버 운영 비용 발생
  6. CD
    배포까지 자동으로 하는 것, 파이프 라인을 통해 프로덕션에서 자동 배포하는 것
    빠르고 쉬운 배포, 빠른 출시, 생산성 향상
    Continuous Delivery -> Continuous Deployment
    DevOps: 개발과 운영을 합쳐..