: 클라이언트는 서버로 요청하는 프로그램을 모두 일컬어 말한다.
: 웹 브라우저가 바로 대표적인 클라이언트 중 하나이다.
: 서버는 클라이언트의 요청을 받아 처리하는 주체이다.
: 클라이언트가 데이터를 요청했다면 데이터를, 단지 서버 내에서 처리만 해달라는 요청을 했다면 해당 요청만 처리할 수도 있다.
: 웹 브라우저에 주소를 입력하는 건 '새로운 화면을 그리기 위한 데이터를 달라'는 데이터 요청에 해당한다.
: 관계형 데이터베이스
: 데이터를 검색하는 언어
: RDB는 데이터 저장, 질의, 수정, 삭제가 용이하지만 반면에 성능을 올리는게 쉽지 않다.
: 데이터베이스의 성능을 높이려면 머신의 성능을 좋게 하는 스케일 업 또는 머신을 여러 대로 분리하는 스케일 아웃이라는 것이 필요하다. 스케일 업은 장비를 업그레이드하면 되지만 스케일 아웃은 데이터베이스를 분산하고, 이때 트랜잭션을 사용하면 성능이 떨어지게 된다. RDB의 이러한 문제를 해결하기 위해 NoSQL이 등장했다.
: 아이피는 인터넷에서 컴퓨터 또는 기기들이 서로를 식별하고 통신하기 위한 주소이다. 그래서 아이피를 알면 서버를 찾을 수 있다. 하지만 서버를 이용하려면 아이피만 알아서는 안된다. 포트까지 알아야한다.
: 아이피가 서버를 찾기 위한 번호라면 포트는 그 서버에서 운용되고 있는 서비스를 구분하기 위한 번호이다.
: 쉽게 생각해서 아이피가 백화점이라면 포트는 각자 다른 물건을 살 수 있는 매장이라고 상상하면 된다.
: 라이브러리는 애플리케이션 개발에 필요한 기능인 클래스, 함수등을 모아놓은 코드의 모음이다.
: 라이브러리는 독립적이므로 라이브러리끼리 영향을 크게 주지 않는다.
: 프레임워크는 소프트웨어 개발을 수월하게 하기 위한 소프트웨어 개발환경이다.
: 프레임워크는 정해진 틀에서 개발해야 한다는 단점이 있지만 개발 효율은 굉장히 높다는 장점이 있다.
라이브러리와 프레임워크는 개발자가 소프트웨어를 개발하기 위해 사용하는 도구이지만 사용 목적에 따라 차이가 있다. 프레임워크는 애플리케이션을 개발할 때 전체적인 구조를 잡기 위해 사용하는 것이고, 라이브러리는 개발을 하는 과정에서 필요한 기능을 구현하기 위해 사용하는 것이다.
: 백엔드 개발자의 주된 업무는 서버 측 애플리케이션을 개발하는 일이다.
: 개발하면서 서버에 대한 지식과 프로그래밍 지식, 만든 프로그램을 배포하고 안전하게 서비스할 수 있게하는 지식을 활용한다.
과제할당
: 모든 일은 주어진 과제를 할당하며 시작한다. 사업부, 마케팅, 개발팀 등에서 개발 과제를 할당한다. 그럼 개발자가 그 과제를 분석하기 시작한다.과제분석
: 예를 들어 소셜 서비스에서 '친구초대 이벤트를 만들어주세요'라는 과제가 주어졌다면 '친구'는 무엇인지, '초대'는 무엇을 의미하는지, '이벤트'는 어떤 조건이 필요하고 초대를 한 친구와 초대된 친구에게 보상을 어떻게 줄지, 이벤트를 위해서 어떤 데이터들을 저장하는지를 결정한다. 또한 제공할 성능과 사용할 기술을 검토하고, 문제가 있다면 해결 방법도 면밀하게 분석하고 정리해야한다.개발
: 개발 과정에서는 기능을 개발하고, 버그를 수정하는 일이 대부분이다. 개발한 코드는 깃허브등의 프로그램을 사용해 동료의 리뷰를 받고 리뷰에 대한 내용을 반영해서 코드의 완성도를 높인다.테스트
: 개발을 마치면 코드가 제대로 동작하는지 테스트해야한다. 과제분석->개발->테스트를 반복하며 프로그램의 완성도를 높인다. 테스트는 단순히 실행이 잘 되는지만 보지 않는다. 로직상 문제는 없는지, 성능 한계는 어느정도인지, 만든 코드가 읽기 편한지, 내가 만든 클래스, 케서드. 함수를 다른 사람이 간편하게 사용할 수 있는지 등을 검토하면서 테스트를 한다. QA
: 개발과 테스트가 어느 정도 마무리됐다면 애플리케이션의 품질을 높이기 위해 QA를 신청한다. QA가 없는 회사라면 개발 조직에서 담당한다.배포와 유지보수
: QA가 완료되면 서버에 배포를 진행한다. 때에 따라 여러 과제를 한번에 병합해서 배포하거나, 새로운 기능이 추가될 때마다 배포한다. 배포 방법은 여러가지이다.: 자바 애너테이션은 자바로 작성한 코드에 추가하는 표식을 말한다. 보통 애너테이션은 @ 기호를 사용하며 애너테이션은 다양한 목적으로 사용하지만 보통은 메타 데이터로 사용하는 경우가 가장 많다.
애너테이션 | 설명 |
---|---|
@Override | 선언된 메서드가 오버라이드 되었음 |
@Deprecated | 더 이상 사용되지 않음 |
@SuppressWarnings | 컴파일 경고를 무시함 |