- cs지식 ( 디자인패턴, 네트워크, 운영체제, 데이터베이스, 자료구조 )
- 데브옵스
개발과 운영 사이에서 발생할 수 있는 충돌을 완화해 주는 인프라를 구성하는 업무를 주로 담당
프로그래밍 언어와 플랫폼, 프레임 워크에 대한 이해도가 수반되어야 한다
뿐만 아니라 여러 운영체제의 차이에 대해서도 공부해야 한다
주로 "성능을 끌어올리는 일"을 담당한다
실행속도
1) 컴파일 타임 : 코드를 기계가 이해할 수 있는 '기계어'로 바꾸는 시간
컴파일 언어를 사용한다면 매번 실행할 때마다 컴파일 과정을 거쳐야 하므로 불편
편의성이 떨어지므로 개발과정이 좀 힘들더라도 최고의 성능, 효율, 속도를 위해 사용된다
2) 런타임 : 프로그램을 실행할 때 한 줄씩 읽고 해석한 뒤, 실행
컴파일 언어보다 실행속도가 느리다
고급언어와 저급언어
1) 고급언어 : 사람 중심의 언어, 생산성이 높다. 컴파일 과정이 필수적
2) 저급언어 : 기계어 중심의 언어 ( 기계어 / 어셈블리어 )
컴파일 언어와 인터프리트 언어
- 컴파일러 : 컴퓨터와 사람 사이의 번역기 / 고급언어를 기계어로 변경해 주는 도구
1) 컴파일 언어 : 컴파일 타임을 사용 / 기계어를 통째로 해석 ( C, C++, 자바, C#, Go)
2) 인터프리트 언어 : 런타임을 사용 / 기계어를 한 줄씩 해석 ( R, 루비, 파이썬, 펄, PHP, javascript )
API
클라이언트 서버와 같은 서로 다른 프로그램에서 요청과 응답을 받을 수 있게 만든 체계
서버 개발자가 API를 개발하고, 클라이언트 개발자는 그 API를 사용
API를 통해 요청과 응답을 주고 받을 때는 데이터도 같이 담긴다
( 클라이언트 소프트웨어는 서버에 요청을 보냄 -> 서버는 요청을 받아서 응답 )
1) 클라이언트 소프트웨어가 서버에 보낸 요청 4가지 분류 (CRUD)
C( create ) R( read ) U( update ) D( delete )
2) 어떠한 요청을 보냈는지 파악할 수 있도록 메서드(함수)를 붙여서 전송
C( create ) => POST
R( read ) => GET
U( update ) => PUT( 전체 ) / PATCH ( 일부 )
D( delete ) => DELETE
*파라미터 ( 메서드를 보낼 때 요청 변수 )
3) 서버에서 보내는 응답 ( HTTP 상태코드 )
잘 해결된 경우 =>200번대 코드
해결이 안된 경우 => 400번대 코드 ( 클라이언트 요청에 문제가 있는 경우 ),
500번대 코드 ( 서버에 문제가 있는 경우 )
4) SDK( software development kit ) : 소프트웨어를 개발하기 위한 도구
5) JSON : 요청을 보내거나 응답을 받을 때의 형식을 통일해 주는 형식
웹
HTML과 CSS를 합쳐서 '퍼블리싱' 또는 '마크업'이라고 칭함
이러한 작업을 하는 사람들을 '퍼블리셔' 혹은 '마크업 개발자'라고 부른다
웹에서는 유저의 업데이트 과정이 없고, 새로고침을 하면 자동으로 업데이트가 반영된다.
웹은 수정이 용이하다
네트웨크의 영향을 크게 받는다
버전별로, 브라우저별로 작동여부가 달라진다
=> 프론트엔드 개발자는 소비자의 브라우저 버전과 종류에 맞춰 정상동작할 수 있도록
추가코드를 작성해야 한다 ( 브라우저 버전의 파편화 )
아래 사이트를 통해 해당 브라우저에서 이 css 사용가능 여부를 알 수 있다
https://caniuse.com/
-애플리케이션
사용자들이 직접 버전을 업데이트 해야한다
데이터베이스
1) 관계형 데이터 베이스
데이터 무결성 ( 데이터의 단 1%의 결점도 없어야 한다 )
데이터의 무결성을 위해 철저히 데이터를 관리할 수 있도록 하는 엑셀과 유사한 데이터 관리기법을 말한다
관리형 데이터 베이스 관리 시스템 ( MS SQL, Oracle DB, MYSQL, MariaDB )
2) 클라이언트와 서버 중 데이터의 위치 구분
-클라이언트에서 데이터를 가져온 경우 사용되는 표현
( 로컬 / 내부 DB / 네이티브 / 클라이언트 / 프론트엔드 )
-서버에서 데이터를 가져온 경우 사용되는 표현
(/서버 / API 요청 / DB / 백엔드 )
프레임워크와 라이브러리
프레임워크
특정 형태의 소프트웨어가 기본적으로 틀이 갖춰져 있는 것 기본으로 제공되는 기능 위에 개발자가 소스코드를 추가적으로 덧붙여 프로그램을 만들 수 이ㅛ어 (스프링, 장고, 리액트)
라이브러리
프로그램 개발을 위해 특정 기능들을 미리 만들어 놓은 것 라이브러리 함수를 사용해 개발
리팩토링
이미 작성한 소스코드에 구현된 기능, 로직 변경 없이 코드의 가독성과 유지보수성을 높이기 위해 내부구조를 변경하는 것
협업
소프트 스킬
문제해결 능력이나 커뮤니케이션 능력 같이 개인이 보유할 수 있는 역량들을 일컫는 말