백엔드 지식

YOONIVERSE·2023년 11월 6일
0

스프링

목록 보기
5/5

서버와 클라이언트

클라이언트란?

: 클라이언트는 서버로 요청하는 프로그램을 모두 일컬어 말한다.
: 웹 브라우저가 바로 대표적인 클라이언트 중 하나이다.

서버란?

: 서버는 클라이언트의 요청을 받아 처리하는 주체이다.
: 클라이언트가 데이터를 요청했다면 데이터를, 단지 서버 내에서 처리만 해달라는 요청을 했다면 해당 요청만 처리할 수도 있다.
: 웹 브라우저에 주소를 입력하는 건 '새로운 화면을 그리기 위한 데이터를 달라'는 데이터 요청에 해당한다.

데이터베이스

RDB

: 관계형 데이터베이스

SQL이란?

: 데이터를 검색하는 언어

NoSQL이란?

: RDB는 데이터 저장, 질의, 수정, 삭제가 용이하지만 반면에 성능을 올리는게 쉽지 않다.
: 데이터베이스의 성능을 높이려면 머신의 성능을 좋게 하는 스케일 업 또는 머신을 여러 대로 분리하는 스케일 아웃이라는 것이 필요하다. 스케일 업은 장비를 업그레이드하면 되지만 스케일 아웃은 데이터베이스를 분산하고, 이때 트랜잭션을 사용하면 성능이 떨어지게 된다. RDB의 이러한 문제를 해결하기 위해 NoSQL이 등장했다.

아이피와 포트

: 아이피는 인터넷에서 컴퓨터 또는 기기들이 서로를 식별하고 통신하기 위한 주소이다. 그래서 아이피를 알면 서버를 찾을 수 있다. 하지만 서버를 이용하려면 아이피만 알아서는 안된다. 포트까지 알아야한다.
: 아이피가 서버를 찾기 위한 번호라면 포트는 그 서버에서 운용되고 있는 서비스를 구분하기 위한 번호이다.
: 쉽게 생각해서 아이피가 백화점이라면 포트는 각자 다른 물건을 살 수 있는 매장이라고 상상하면 된다.

라이브러리와 프레임워크

라이브러리란?

: 라이브러리는 애플리케이션 개발에 필요한 기능인 클래스, 함수등을 모아놓은 코드의 모음이다.
: 라이브러리는 독립적이므로 라이브러리끼리 영향을 크게 주지 않는다.

프레임워크란?

: 프레임워크는 소프트웨어 개발을 수월하게 하기 위한 소프트웨어 개발환경이다.
: 프레임워크는 정해진 틀에서 개발해야 한다는 단점이 있지만 개발 효율은 굉장히 높다는 장점이 있다.

라이브러리와 프레임워크는 개발자가 소프트웨어를 개발하기 위해 사용하는 도구이지만 사용 목적에 따라 차이가 있다. 프레임워크는 애플리케이션을 개발할 때 전체적인 구조를 잡기 위해 사용하는 것이고, 라이브러리는 개발을 하는 과정에서 필요한 기능을 구현하기 위해 사용하는 것이다.

백엔드 개발자의 업무

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

  1. 과제할당 : 모든 일은 주어진 과제를 할당하며 시작한다. 사업부, 마케팅, 개발팀 등에서 개발 과제를 할당한다. 그럼 개발자가 그 과제를 분석하기 시작한다.
  2. 과제분석 : 예를 들어 소셜 서비스에서 '친구초대 이벤트를 만들어주세요'라는 과제가 주어졌다면 '친구'는 무엇인지, '초대'는 무엇을 의미하는지, '이벤트'는 어떤 조건이 필요하고 초대를 한 친구와 초대된 친구에게 보상을 어떻게 줄지, 이벤트를 위해서 어떤 데이터들을 저장하는지를 결정한다. 또한 제공할 성능과 사용할 기술을 검토하고, 문제가 있다면 해결 방법도 면밀하게 분석하고 정리해야한다.
  3. 개발 : 개발 과정에서는 기능을 개발하고, 버그를 수정하는 일이 대부분이다. 개발한 코드는 깃허브등의 프로그램을 사용해 동료의 리뷰를 받고 리뷰에 대한 내용을 반영해서 코드의 완성도를 높인다.
  4. 테스트 : 개발을 마치면 코드가 제대로 동작하는지 테스트해야한다. 과제분석->개발->테스트를 반복하며 프로그램의 완성도를 높인다. 테스트는 단순히 실행이 잘 되는지만 보지 않는다. 로직상 문제는 없는지, 성능 한계는 어느정도인지, 만든 코드가 읽기 편한지, 내가 만든 클래스, 케서드. 함수를 다른 사람이 간편하게 사용할 수 있는지 등을 검토하면서 테스트를 한다.
  5. QA : 개발과 테스트가 어느 정도 마무리됐다면 애플리케이션의 품질을 높이기 위해 QA를 신청한다. QA가 없는 회사라면 개발 조직에서 담당한다.
  6. 배포와 유지보수 : QA가 완료되면 서버에 배포를 진행한다. 때에 따라 여러 과제를 한번에 병합해서 배포하거나, 새로운 기능이 추가될 때마다 배포한다. 배포 방법은 여러가지이다.
    특정 개수의 서버들을 돌아가며 배포하는 롤링 배포,
    똑같은 서버 인스턴스를 띄우고 로드밸런서 설정을 바꿔버리는 블루 그린 배포,
    전체 서버의 특정 비율만큼 배포해보고 문제없는 경우 점점 배포를 늘려가는 카나리 배포 등이 있다.
    개발자는 코드의 개발부터 테스트, 배포, 모니터링까지 사실상 무한 반복을 한다.
    CI/CD라고 한다. CI는 지속적인 통합이라는 뜻으로, 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 저장소에 코드가 반영되는 것을 말하고, CD는 실제 프로덕션 환경까지 변경된 코드가 반영되는 것을 의미한다.

자바 애너테이션

: 자바 애너테이션은 자바로 작성한 코드에 추가하는 표식을 말한다. 보통 애너테이션은 @ 기호를 사용하며 애너테이션은 다양한 목적으로 사용하지만 보통은 메타 데이터로 사용하는 경우가 가장 많다.

애너테이션설명
@Override선언된 메서드가 오버라이드 되었음
@Deprecated더 이상 사용되지 않음
@SuppressWarnings컴파일 경고를 무시함
profile
스텝이 꼬이면 그것이 바로 탱고 💃

0개의 댓글