-
CI/CD
애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법입니다. CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포
-
동기와 비동기의 차이
메소드를 실행시킴과 동시에 반환 값이 기대되는 경우를 동기 라고 표현하고 그렇지 않은 경우에 대해서 비동기 라고 표현합니다. 동기 방식은 값이 반환되기전까지 뒤의 단계는 blocking되어있고,, 비동기 방식은 작업이 이번트큐에 들어가거나 스레드에 작업을 위임하고, 다음 작업을 실행하기 때문에 끝나는 순서대로 반환되므로 기대되는 값이 바로 반환되지 않습니다.
-
CSR와 SSR의 차이
CSR : Client Side Rendering
SSR : Server Side Rendering
- SSR : 서버쪽에서 렌더링 준비를 끝마친 상태로 클라이언트에 전달하는 방식
- 서버는 즉시 렌더링 가능한 HTML 파일을 만든다
- 클라이언트에 전달되는 순간, HTML은 즉시 렌더링, but 조작은 불가능
- 클라이언트가 javascript를 다운받기 시작
- 다운 받는 과정에서 사이트를 볼 수 있지만, 조작은 불가능하다 (조작을 기억은 하고 있는 상태)
- 브라우저가 javascript 프레임워크를 실행하고, 기억하고 있던 사용자의 조작을 실행되면서, 웹페이지가 작동된다
- CSR : 렌더링이 클라이언트에서 일어난다 (서버는 클라이언트에 HTML과 JS를 보낸다)
- 유저가 요청을 보내면 CDN이 HTML파일과 JS로 접근할 수 있는 링크를 클라이언트로 보낸다 (CDN은 엔드 유저의 요청에 "물리적"으로 가까운 서버에서 요청에 응답하는 방식을 말함)
- 클라이언트는 HTML과 JS를 다운받지만, 이 과정에서 유저는 아무것도 볼 수 없다
- 다운이 완료된 JS가 실행이 되고, 데이터를 받기 위한 API호출된다
- 이 과정에서 웹사이트에는 placeholder를 보여준다
- 서버의 API요청에 대한 응답으로 받아온 data를 placeholder에 넣어주고, 상호작용이 가능해진다
- 차이점
- 첫 페이지 로딩시간은 SSR이 필요한 HTML과 스크립트만 불러오므로, 평균적으로 SSR이 더 빠르다
- 나머지 로딩시간은 CSR이 처음부터 다 받아오므로, 조작을 하기까지는 CSR이 더 빠르다
- SEO
- 검색 엔진은 '크롤러'로 웹 사이트를 읽는다. 그 과정에서 SSR은 애초에 서버에서 컴파일되어 클라이언트로 넘어오므로 크롤러에 대응하기가 더 쉽다
- 서버의 자원
- SSR은 매번 서버에 요청을 하므로 더 많은 서버의 자원을 사용한다(리액트로 구현할 때도 비슷한 문제가 발생한다)
- 사용 예시
- SSR
- 네트워크가 느린 경우
- SEO가 필요한 경우
- 최초 메인페이지의 로딩이 빨라야하는 경우
- 웹사이트의 조작이 많이 필요없는 경우
- CSR
- 네트워크가 빠른 경우
- 서버의 성능이 좋지 않아서, 클라이언트에 부하를 줘야하는 경우
- 보여줘야하는 데이터가 많은 경우
- SEO가 중요하지 않을 경우
- 웹사이트에서 조작이 많이 필요한 경우
-
마이데이터관련해서 생긴 이유, 어떤 분야에서 사용
- 등장배경
- 기존의 데이터 3법에 의해 개인의 금융 데이터의 활용도가 매우 낮았었음. But, 기업의 서비스를 이용하면서 개인정보들은 데이터의 형태로 저장되면서 기업측면에서는 다양한 분야에서 활용. 그런 상황이 지속되면서 정보가 여기저기 뿌려지면서 개인이 개인정보를 관리하는 것도 어려워지고, 큰 기업일 수록 데이터의 독과점의 형태로 변해가면서 데이터 활용 기술의 발전이 어려워졌다
- 마이데이터는 무엇인가?
- 정보주체인 개인이 본인의 개인정보를 관리, 통제하고, 이를 신용관리, 자산관리, 건강관리까지 개인의 생활에 능동적으로 활용하는 일련의 과정
- 목표
- 개인의 효율적인 본인정보 관리와 활용을 전문적으로 지원하는 산업이 마이데이터 산업의 목표. 즉, 정보의 주체인 개인이 본인의 데이터를 사용할 수 있게되면서, 한 기업이 보유한 데이터를 주체인 개인의 허락에 의해서 제 3자에게 공유할 수 있게 된 것입니다.
- 이점
- 여기저기 흩어져 있는 데이터를 수집해, 사용자가 한 눈에 볼 수 있게됨.
- 사업자의 서비스 종류에 따라 다양한 분야에 활용될 수 있기때문에 발전가능성이 무궁무진하다
- 단점
- 데이터 공유 범위가 불분명
- 정보가 공유되는 만큼 유출이나 악용의 가능성
- 사용방향성
- 마이데이터는 자신의 데이터를 다른 곳에 공유해서 새로운 서비스를 할 수 있게 해주는 수단
- 끊임없이 변화하고 공유되는 사용자의 데이터를 위해 지속적인 확장성과 보안성을 제공하고, 타 서비스로 데이터가 공유되기 위해 빠르고 유연하고 작동할 수 있으며, 마이데이터를 관리하는 과정에서 비용 절감까지 노릴 수 있는 기술은 '클라우드'이다.
- 수집된 정보를 2차적으로 활용한다면 자연스럽게 AI, 머신러닝 등을 통한 데이터 분석 및 활용 능력을 기대할 수도 있다.
- 정부에서도 '금융분야 클라우드 이용 확대방안'을 추진 => KT는 이미 마이데이터 사업을 지원하기 위한 금융 클라우드 패키지 서비스를 시작했음.
-
뷰의 장점
- 직관적이고 낮은 러닝커브
- 재사용을 통한 애플리케이션을 개발 기간 단축 및 양질의 코드를 생산가능
- angular의 데이터 바인딩의 장점과 react의 가상 돔(빠른 렌더링)의 장점을 모두 가짐
- 코드 규격을 맞추기가 쉬움
- 공식 라이브러리가 훌륭함
-
브라우저에서 서버까지 응답 흐름
- 사용자의 url 요청
- 브라우저의 url 분석
프로토콜://도메인이름:포트/경로?파라미터#anchor(일종의 북마크 기능)
- HSTS(HTTP Strict Transport Security) 목록 조회
- http로 요청이 왔다면 응답 헤더에 sts가 포함하여 응답하고 브라우저는 이를 호가인하고 해당 서버에 요청할 때 https만을 통해 통신하게 된다. 자신의 HSTS캐시에 해당 URL을 저장하는데 이것이 HSTS 목록
- url을 ip주소로 변환
- 컴퓨터가 읽을 수 있는 ip주소로 변환해야 서로 통신 가능
- 라우터를 통해 해당 서버의 게이트웨이까지 이동
- ARP를 통해 IP주소를 MAC주소로 변환
- ARP은 네트워크 상에서 IP주소를 물리적 네트워크 주소로 대응시키기 위해 사용되는 프로토콜
- 대상 서버와 TCP 소켓 연결
- 3-way-handshake 과정을 통해 이루어진다
- SYN : 클라이언트는 서버와 연결을 설정하기 원하므로 동기화 시퀀스 번호가 포함된 세크먼트를 서버에 전송하여 클라이언트가 통신 시작 가능성이 있고, 어떤 시퀀스로 통신할 건지를 서버에 알린다
- SYN + ACK : 서버는 SYN-ACK 신호 비트가 설정된 클라이언트 요청에 응답
- ACK : 클라이언트는 서버의 응답을 확인하고 둘 다 실제 데이터 전송을 시작할 안정적인 연결을 설정
- HTTP(HTTPS) 프로토콜로 요청, 응답
- 브라우저에서 응답을 해석
-
라운드 트립
- 클라이어트와 서버간의 데이터 왕복 과정을 의미
- 라운드 트립이 빈번하다는 것은 클라이언트와 서버 간에 요청과 응답이 빈번하다는 이야기로, 서버의 성능에 그리 좋은 결과를 주지 않는다는 이야기.
- 웹페이지는 라운드 트립이 가능한 한 적게 일어나도록 제작되어야 한다.
-
RPA
- Robotic Process Automation : 로봇 프로세스 자동화
- 가상 소프트웨어 로봇을 사용해 시간이 많이 드는 수작업을 수행하는 비즈니스 프로세스 자동화 기술
- 기능
- 수작업으로 이루어지는 반복 업무
- 대량의 업무
- 다중 시스템 업무
- 대부분 수작업 프로세스의 대체로 사용되어 키 입력 오류를 최소화하고 작업 속도를 높이며 비용을 절감
- 생산성 향상, 워크플로 자동화, 사람 실수 제거, 인건비 절감, 리스크 관리, 비즈니스 민첩성 가화, 프로세스 투명성 제고
- 피크 시즌 중에도 서비스 수준을 일관성있게 유지할 수 있어 직원은 반복작업말고 가치가 높은 고객의 경험도 향상 시킬 수 있다
- 무인 RPA/유인 RPA
- 지능형 RPA는 인공지능(AI)과 머신러닝 기술로 기존 기능을 보강하여 RPA는 이러한 기술을 통해 보다 인지적인 작업 활동을 자동화을 가능하게 한다
-
AICC (AIContact Center)
- 기업의 고객 접점 환경에 최적화한 AI 기술과 다양한 솔루션 제공 및 기업 니즈에 따른 맞춤 서비스
-
DID
- 블록체인 기반의 '탈중앙화 신원증명(Decentralized Identity)
- 개인정볼르 사용자의 단말기에 저장해, 개인정보 인증시 필요한 정보만 골라서 제출하도록 해주는 전자신원증명 기술
- 개인이 자신의 데이터를 직접 관리하는 구조, 중앙화된 기관을 거치지 않으면서도 검증이 가능함
- 핵심 : 데이터의 주권이 중앙기관과 기업에서 개인에게로 넘어온다는 사실
-
Hashmap
- 데이터를 저장할 때 키와 밸류 짝으로 저장
- 저장시에는 키 값으로 해시함수를 실행한 결과를 저장위치를 결정
- 특정 데이터의 저장위치를 해시함수를 통해 바로 알 수 있으므로 데이터의 추가, 삭제, 특히 검색이 빠르다는 장점
- 키값을 통해서만 검색이 가능, 키값은 중복될 수 없지만 밸류값은 키값이 다르다면 중복 가능
-
tree구조와 hash구조 비교해서 장단점
- 시간복잡도 hash : O(1), tree : O(logN)
- hash는 정렬, 순서를 보장하지 않는다
- 키에 대한 정렬된 순차적인 접근이 필요한 경우 tree를 사용해야한다
-
hash값이 겹친 경우 어떻게 관리할 건지
- 해당 슬롯을 연결 리스트로 저장
- 해시함수로 얻은 주소가 아닌 다른 주소 공간에 데이터를 저장
-
프로세스와 스레드 차이
- 프로세스
- 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
- 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)
- 운영체제로부터 시스템 과정을 할당받는 작업의 단위
- 실행된 프로그램을 의미
- 프로세스당 최소 1개의 스레드를 갖는다
- 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료 구조에 접근 불가능
- 접근할려면 IPC를 사용해야한다
- 스레드
- 프로세스 내에서 실행되는 여러 흐름의 단위
- 프로세스의 특정한 수행 경로
- 프로세스가 할당받은 자원을 이용하는 실행의 단위
- 프로세스 내에서 각각 stack만 따라 할당받고, code, data, heap 영역은 공유
- 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내에 스레드끼리 공유하면서 실행된다
-
스케줄러
- 한정적인 메모리를 여러 프로세스가 효율적으로 사용할 수 있도록 다음 실행 시간에 실행할 수 있는 프로세스 중에 하나를 선택하는 역할
- 장기 스케줄러/잡 스케줄러
- 디스크와 메모리 사이의 스케줄링 담당
- 어떤 프로세스에 메모리를 할당하여 ready queue로 보낼지 결정하는 역할
- 단기 스케줄러/cpu 스케줄러
- 메모리와 cpu사이의 스케줄링 담당
- 어떤 프로세스를 running 상태로 전환 시킬지 결정하는 역할
- 중기 스케줄러/스와퍼
- 여유 공간을 마련하기 위해 프로세스를 통째로 메모리에서 디스크로 쫓아내는 역할
-
서블릿에서 dispatcher
- 서블릿 컨테이너의 가장 앞단에서 HTTP 프로토콜로 들어오는 모든 요청을 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러
- 처음 클라이언트에서 요청이 오면 디스패처 서블릿이 해당 요청을 받는다.
- Handler Mapping을 통해 요청에 알맞은 컨트롤러를 찾아낸다.
- 찾아낸 컨트롤러를 Handler Adapter를 통해 해당 컨트롤러의 메서드를 실행시킨다.
- 컨트롤러는 요청을 처리한 뒤 처리한 결과와 해당 뷰 정보(ModelAndView)를 다시 디스패처 서블릿에게 전달한다.
- 받은 정보로 디스패처 서블릿은 View Resolver를 통해 View 파일을 찾는다.
-
agile 방식과 폭포수 방식의 차이 및 장단점
- 폭포수
- 소프트웨어 개발 단계가 위에서부터 아래로 폭포에서 물이 떨어지듯이 순차적으로 진행
- 한단계씩 진행함에 따라 다시 이전 단계로 가지 않고 계속 진행하기에 다음 단계로 가기 전에 완벽하게 요구사항을 반영하여 개발했다는 것을 전제
- 장점 : 수직적으로 진행 => 각 과정에 대한 이해가 용이
- 단점 : 개발 도중에 요구사항이 변경되었을 경우, 추가적인 비용과 시간 발생
- 애자일
- 소프트웨어 개발 단계를 명확하게 구분하지 않고 각 단계를 반복적으로 수행하면서 진행, 요구사항을 추가하거나 제외하면서 소프트웨어를 개발
- 잦은 요구사항의 변경이나 큰 프로젝트를 맡게 되어 요구사항 분석 및 설계를 완벽하게 하기 어려운 경우 애자일 방식이 더 적합할 수 있음
- 스크림
- 제품 백로그
- 스프린트 백로그
- 스프린트
- 스크럼 회의
- 장점 : 요구 사항 반영 용이, 지속적으로 테스트하면서 개발 초기에 버그 발견 용이
- 단점 : 폭포수 방식에 비해 체계화된 문서가 적을 수도 있다
출처 : https://library.gabia.com/contents/infrahosting/9142/
https://doqtqu.tistory.com/313
https://velog.io/@taeha7b/software-development-process
안녕하세요 최종현님
이번주 면접관입니다. 내일 면접 취소됐습니다. 다음주에 오세요~~