소개
rest :
- Representational State Transfer” 의 약자
- 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것
- JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적
- REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
- REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다.
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET,
PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미
- API(Application Programming Interface)란
데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것
소켓통신 :
- 소켓(Socket)은 TCP/IP 기반 네트워크 통신에서 데이터 송수신의 마지막 접점
- 소켓통신은 이러한 소켓을 통해 서버-클라이언트간 데이터를 주고받는 양방향 연결 지향성 통신을 말합니다. 소켓통신은 보통 지속적으로 연결을 유지하면서 실시간으로 데이터를 주고받아야 하는 경우에는 사용됩니다
- 소켓은 클라이언트 소켓과 서버 소켓으로 구분되며, 소켓간 통신을 위해서는 네트워크상에서 클라이언트와 서버에 해당되는 컴퓨터를 식별하기 위한 IP주소와 해당 컴퓨터내에서 현재 통신에 사용되는 응용프로그램을 식별하기 위한 포트번호가 사용된다.
3. 서버 소켓 구현하기
1) 서버소켓 생성
ServerSocket serverSocket = new ServerSocket(8000); // 포트번호
2) 클라이언트 접속 대기
Socket socket = serverSocket.accept( );
3) 데이터 송수신을 위한 input/output 스트림 생성
InputStream in = socket.getInputStream( );
OutputStream out = socket.getOutputStream( );
4) input 스트림을 통한 데이터 수신 (클라이언트 → 서버)
byte[ ] inputData = new byte[100];
int length = in.read(inputData);
String inputMessage = new String(inputData, 0, length);
5) output 스트림을 통한 데이터 송신 (서버 → 클라이언트)
String outputMessage = "보낼메시지";
out.write(outputMessage.getBytes( ));
out.flush( );
6) 통신 종료
socket.close( );
serverSocket.close( );
4. 클라이언트 소켓 구현하기
1) 클라이언트 소켓 생성을 통한 서버접속
Socket socket = new Socket("127.0.0.1", 8000); // IP주소, 포트번호
2) 데이터 송수신을 위한 input/output 스트림 생성
InputStream in = socket.getInputStream( );
OutputStream out = socket.getOutputStream( );
3) output 스트림을 통한 데이터 송신 (클라이언트 → 서버)
String outputMessage = "보낼메시지";
out.write(outputMessage.getBytes( ));
out.flush( );
4) input 스트림을 통한 데이터 수신 (서버 → 클라이언트)
byte[ ] inputData = new byte[100];
int length = in.read(inputData);
String inputMessage = new String(inputData, 0, length);
5) 통신 종료
socket.close( );
soap : (Simple Object Access Protocol)
- REST와 SOAP는 각기 다른 두 가지의 온라인 데이터 전송 방식입니다. 둘 다 웹 애플리케이션 간 데이터 통신을 허용하는 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)를 구축하는 방법을 정의합니다.
- REST(Representational State Transfer)는 아키텍처 원칙 세트이고, SOAP(Simple Object Access Protocol)는 World Wide Web Consortium(W3C)에서 유지관리하는 공식 프로토콜입니다. 즉, SOAP는 프로토콜이지만, REST는 프로토콜이 아님
- XML와 HTTP등을 기반으로 하여 다른 컴퓨터에 있는 데이터나 서비스를 호출하기 위한 통신 규약
- HTTP기반으로 프록시와 방화벽에 구애받지 않고 통신이 가능
- xml로 태그 형태로 메세지를 보내기때문에, 다른 기술들에 비교해 상대적으로 느림
- 구조상 많은 정보가 포함되어있어 데이터 전송량이 큰편
grpc : (Remote Procedure Call)
- 구글에서 개발한 어느 환경에서 실행할 수 있는 최신 오픈 소스 고성능 RPC 프레임워크이다.
별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스 간 통신 기술이다. 쉽게 설명해서 MSA(Micro Service Architecture)구조롤 서비스를 만들게 되면, 다양한 언어와 프레임워크로 개발되는 경우가 있는데, 이러한 구조에 RPC를 이용하여 언어에 구애받지 않고, 원격에 있는 프로시저를 호출하여 고유 프로그램의 개발에 집중할 수 있게 해주는 기술이다.
- gRPC를 이용하면 원격에 있는 애플리케이션의 메서드를 로컬 메서드인 것처럼 직접 호출할 수 있기 때문에 분산 애플리케이션과 서비스를 보다 쉽게 만들 수 있다.
- gRPC는 IDL(Interface Definition Language)로 protocol buffer를 사용한다. protocol buffer는 직렬화 데이터 구조이다. 어떤 언어나 플랫폼에서도 통신 프로토콜이나 데이터 저장을 사용할 때, 구조화된 데이터를 전환하게 해주는 방법이다.
직렬화의 종류에는 대표적으로 Json과 XML이 있다.
http:
- 하이퍼텍스트 트랜스퍼 프로토콜, 인터넷에서 하이퍼텍스트 문서를 교환하기 위해 사용되는 통신규약
- world wide web을 위한 프로토콜로 요청과 응답으로 구성, 서버 모델이 요청을 하면 서버가 요청을 처리하고 응담하는 구조 (기본포트 80)
https:
- http + ssl(Secure Socket Layer)을 사용하여 보안성을 추가한것, ssl은 서버와 브라우저 사이에 안전하게 암화화된 연결로, 민감한 정보를 주고받을때 정보의 도난을 막아줌 (기본포트 443)
onpremise cloud hybrid 차이
onpremise:
- 온프레미스(On-premise)는 원격환경에서 서버를 운영하는 클라우드와는 대비되는 개념으로 기업이 서버를 자체적으로 보유하고 직접 설치 및 운영하는 방식
온프레미스로 서버 시스템을 구축하기 위해서는 하드웨어와 애플리케이션을 구매해야 하며 데이터 센터나 서버 룸과 같은 물리적인 공간도 필요합니다. 또한 인프라 구축을 위한 시간과 인력도 준비되어야 하기 때문에 많은 비용이 소요되지만 기업에 환경과 상황에 맞게 커스터마이징을 할 수 있고 인프라에 문제가 생겼을 때 즉각적으로 대응이 가능, 클라우드 서버가 데이터 유출 등 보안 상의 문제가 발생할 수
cloud:
IT 인프라를 클라우드로 구축하는 경우 초기 투자 비용이 거의 발생하지 않습니다. 또한 인터넷이 연결된 어디에서든 쉽게 사용할 수 있고 인프라 시스템을 안정화하기 위한 시간도 필요하지 않습니,
온프레미스는 직접 운영하는 만큼 IT인프라를 운영하기 위한 인력과 관리비용을 기업에서 지불해야 합니다. 반면 클라우드의 경우 IT 인프라 운영을 직접 하지 않기 때문에 인프라 운영에 대한 부담이 크게 발생하지 않습니다.
hybrid:
클라우드와 온프레미스의 장점을 결합한 하이브리드 클라우드 서비스, 하이브리드 클라우드 서비스는 보안 중요한 서비스와 데이터의 경우 온프레미스 방식으로 하고, 비교적 보안이 덜 중요한 영역은 클라우드 환경으로 IT 인프라를 구축하는 형태를 말합니다
테스트 기법 설명
화이트박스 테스트
- 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트케이스를 설계
- 설계된 절차에 초점을 둔 구조적 테스트, 테스트 과정의 초기에 적용
- 모듈 안의 작동을 직접 관찰
- 기초 경로 검사(테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 잇게함), 제어 구조 검사(프로그램 모듈내 논리적 조건으 테스트하는 조건검사, 프로그램의 반복 구조에 초점을 맞춰 실시하는 루프검사)
블랙박스 테스트
- SW가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로 기능 테스트라고함
- 테스트 과정의 후반부의 적용
- 동치분할 검사(입력 자료에 초점을 맞춰 테스트케이스 만들고 검사), 오류 예측 검사(과거의 경험이나 확인자의 감각으로 테스트 하는 기법)
sql쿼리로 맥스값을 구하는 방법
공수산정하는 방법
- 범위명세서를 기준으로 작성됭 WBS기준으로 산정
- FP를 통한 접근방법, 사용자가 요구하는 기능을 구현하기 위해서 어떤 기능이 필요할지 정리하고 이를 기반으로 하여 표준화된 방법을 통해 공수를 투정, =>금액이 커질수 있어 오버피팅되는경우가 많다.
- 하향식 산정 : 시스템을 이해한 후 개발자 합의(인력, 시스템 크기, 예산)에 따라 산출
- 상향식 산정 : 서브시스템의 개발비를 산정 후 합산하여 전체 시스템의 비용을 산정, 하양식 방법의 비과학성 보완
sr처리하는 프로세스
가장 자신있던 프로젝트 관리와 개발적인 측면에서 발표
최근에 관심이 있는 신기술이 있는지
오픈소스 사용해본 경험