본문 바로가기
개인공부/스프링 부트 3 백엔드 개발자 되기

스프링 부트 3 백엔드 개발자 되기 - 1장 이론

by 응가1414 2023. 6. 22.

클라이언트란?

  1. 클라이언트는 서버로 요청하는 프로그램을 모두 일컬어 말합니다.
  2. 클라이언트란?
  3. 클라이언트(client)는 서버로 요청하는프로그램을 모두 일컬어 말합니다.
  4. 주소를 입렵한 뒤 enter을 눌러 정보를 요청하는 행위를 '서버에 요청한다'라고 한다.
    1. 그러면 서버는 그 주소에 맞는 화면으로 응답

데이터 베이스 (Database)

  1. 데이터베이스(Database)는 여러 사람이 데이터를 한 군데에 모아 놓고 여러 사람이 사용할 목적으로 관리하는 데이터 저장소
  2. SQL(Structured Query Language)은 데이터 베이스가 아니다.
    1. 데이터베이스 관리 시스템이다.

RDB(Relational Database)

  1. RDB는 관계형 데이터 베이스라는 뜻이다.
  2. RDB 가 아닌 데이터베이스를 NoSQL 또는 NewSQL로 구분합니다.
  3. 관계형 데이터베이스는 데이터를 행(row)과 열(column)로 이루어진 테이블로 관리하며
    1. 기본키 (primary key)를 사용해 각 행을 식별합니다.

SL (Structured Query Language)

  1. SQL은.쿼리, 즉, 데이터 검색을 하는 언어 입니다.
  2. SQL도 하나만 있는 것이 아니라 ANSI 표준 SQL이 있고 각 RDB별로 방언이 있습니다.

NoSQL (Not Only SQL)

  1. NoSQL의 뜻이 SQL을 안쓴다는 의미로 사용되기도 한다.
  2. RDB는 데이터 저장, 질의 수정, 삭제가 용이하지만
    1. 반면에 성능을 올리는 게 쉽지 않다.
  3. 데이터베이스의 성능을 높이려면
    1. 스케일 업 : 머신을 여러대로 분리하는
    2. 스케일 아웃 : 데이터베이스를 분산하고, 이때 트랜잭션을 사용하면 서능이 떨어지게 된다.

* 트랜잭션 (Transaction) : 데이터 베이스의 상태를 변화 시키기 위해서 수행하는 작업의 단위

아이피와 포트

  1. 아이피(IP) : 인터넷에서 컴퓨터 또는 기기들이 서로를 식별하고 통신하기 위한 주소입니다.
  2. 서버를 이용하려면 아이피만 알아서는 안 된다.
  3. 포트까지 알아야 한다.
  4. 아이피가 서버를 찾기 위한 번호라면
  5. 포트는 그서버에서 운용되고 있는 서비스를 구분하기 위한 번호이다.
  6. 아이피가 백화점이라면 포트는 각자 다른 물건을 살수 있는 매장이다.
  7. 웹 브브라우저에 주소는 사실 아이피와 포트가 들어 있다.
  8. www.naver.com과 같은 주소는 아이피를 쉽게 알아 보기 위해 이름표를 붙인 것이다.
    1. Https://라는 것은 서버의 443번 포트를 사용하기 위한 입력
  9. 웹사이트는 기본 8080포트를 사용

라이브러리와 프레임워크

  1. 다른 사람가 만든 라이브러리와 프레임워크를 가져와 사용.

라이브러리란?

  1. 라이브러리(library)는 애플리케이션 개발에 필요한 기능인 클래스, 함수 등을 모아놓은 코드의 모음
  2. 책들의 모음이라고 이해하는 것이 좋다.
  3. 라이브러리는 독립적으로 라이브러리끼리 영향을 크게 주지않는다.

프레임워크

  1. 프레임워크는 소프트웨어 개발을 수월하게 하기 위한 소프트웨어 개발 환경.
    1. 단점 : 프레임워크는 정해진 틀에서 개발해야 한다
    2. 장점 : 개발 효율은 굉장히 높다.
  2. 프레임워크는 애플리케이션을 개발할 때 전체적인 구조를 잡기 위해 사용
  3. 라이브러리는 개발을 하는 과정에서 필요한 기능을 구현하기 위해 사용

백엔드 개발자의 업무

  1. 백엔드 개발자의 업무
  2. 백엔드 개발자의 주된 업무는 서버 측 애플리케이션을 개발하는 일
  3. 개발하면서 서버에 대한 지식과 프로그래밍 지식, 만든 프로그램을 배포하고
    1. 안전하게 서비스할 수 있게 하는 지식을 활용합니다.

 

  1. 과제 할당
    1. 과제를 할당하며 시작합니다.
    2. 사업부, 마케팅, 개발팀 등에서 개발 과제를 할당합니다.
  2. 과제 분석
    1. '친구 초대 이벤트를 만들어주세요'
      1. 친구는 무엇인지,
      2. 초대는 무엇을 의미하는지,
      3. 이벤트는 어떤 조건이 필요하고
      4. 초대를 한 친구와 초대된 친구에게 보상을 어떻게 줄지
    2. 제공할 성능과 사용할 기술을 검토하고
    3. 문제가 있다면 해결 방법도 면밀하게 분석하고 절리 해야한다.
    4. 오늘날 서비스는 복잡하므로 작은 기능에서 발생하는 문제 하나가
      1. 서비스 전체의 분제로 이어질 수 있으므로 이과 정은 매우 중요합니다.
  3. 개발
    1. 개발을 진행,
    2. 개발 과정에서는 기능을 개발하고
    3. 버그를 수정하는 일이 대부분
    4. 개발한 코드는 깃허브(github)등의 프로그램을 사용해 동료의 리뷰를 받고
    5. 리뷰에 대한 내용을 반영해서 코드의 완성도를 높입니다.
  4. 테스트
    1. 로직상 문제는 없는지
    2. 성능 한계는 어느 정도인지
    3. 만든 코드가 읽기 편한지
    4. 내가 만든 클래스, 메서드, 함수를 다른 사람이 간편하게 사용할 수 있는지 등을 검토하면서
    5. 개발자에 따라 단위 테스트를 작성하는 경우도 있습니다.
    6. 테스트 주도 개발 기법을 사용하기도 합니다.
  5. QA
    1. 애플리케이션의 품질을 높이기 위해 QA(quality assurance)를 신청합니다.
  6. 배포와 유지보수
    1. 여러 과제를 한 번에 병합해서 배포하거나
    2. 새로운 기능이 추가될 때마다 배포합니다.
    3. 쉽고 안전하게 배포하고
    4. 문제 발생시 쉽게 이전 버전으로 돌리는 작업을 할 수 있게 준비
    5. 배포 방법은 여러가지다
      1. 롤링 배포 : 특정 개수의 서버들을 돌아가며 배포
      2. 블루 그란 배포 : 서버 인스턴스를 띄우고 로드밸런서 설정을 바꿔 버린다.
      3. 카나리 배포 : 전체 비율(특징)만 배포하고 -> 문제 없으면 점점 배포를 늘린다.
    6. 자동화
      1. CI : 지속적 통합 / 저장소에 코드가 반영
      2. CD : 지속적 배포 / 실제 프로덕션 환경 까지 변경된 코드가 반영
    7. 자바 에너테이션
      1. 자바 애너테이션(java annotation)은 자바로 작성한 코드에 추가하는 표식을 말합니다.