Font size
WorksheetsT2TEST
Total questions: 85
Worksheet time: 1hrs 4mins
Spring Boot에 대한 설명중 잘못된 것은?
Spring Framework를 편리학 사용하는 방법 제공
Spring 애플리케이션을 하나의 명령으로 실행 가능
필요한 설정들을 모두 수동으로 구성
필요한 라이브러리를 간편하게 추가하는 starter 제공
의존성 주입에 대한 설명으로 맞는 것은?
직접 클래스를 생성하여 할당한다
Spring Bean으로 등록하지 않아도 자동으로 의존성이 주입된다.
Spring Bean으로 등록하면 의존성이 자동으로 주입된다.
Spring Framework를 직접 호출해서 주입해야 한다.
의존성 관리 도구에 대한 설명으로 잘못된 것은?
개발 시 필요한 라이브러리를 쉽게 추가할 수 있다
Maven 은 DSL 로 작성하고, Gradle은 XML 로 작성된다.
추가한 라이브러리를 자동으로 다운받고 구성해 준다
Java 에서는 Gradle과 Maven 을 많이 사용한다.
Spring Boot 에서 개발을 하는 것은 주로 어떤 것을 하는 것인가?
Spring Bean 의 구현의 등록
Spring IoC Container 구현
Spring Framework 를 직접 호출하여 구현
EJB (Enterprise Java Bean) 구현
REST API 에 대한 설명으로 틀린 것은?
REST 를 준수한다는 의미로 RestFul 이라고도 부른다
URI 와 HTTP 메소드를 사용한다.
상태를 저장하는 Staeful 하도록 설계하는 것이 권장된다.
200 OK 와 같은 HTTP Status Code 를 응답으로 반환한다.
REST API 설계 원칙이 아닌 것은?
No Casheability
Uniform interface
Client-Server 아키텍처
Stateless
REST API 를 설계하기 위한 표준 사양서는?
OpenAPI
Spring
Gradle
Swagger UI
REST API 를 설계할 떄 사용하는 도구는?
Spring
Gradle
Swagger UI
Swagger Editor
다음 중 Spring Bean 으로 등록하기 위해 사용하는 애노테이션은?
@RequestMapping
@Api
@Controller
@ApiResponse
10. Java 에서 사용하는 단위 테스팅 프레임워크는?
Spring Boot
JUnit
Gradle
Swagger
Lombok 을 사용하는 이유로 제일 올바른 것은?
모델 간 변환을 빠르게 구현하도록 해준다
단순 반복적인 Getter, Setter 등의 작성을 빠르게 해준다
Swagger UI 를 Spring App 에서 제공할 수 있게 해준다
단위 테스트를 작성을 편리하게 해준다.
다음 중 의존성 주입 시 사용할 수 있는 방법은?
생성자 주입
매소드 주입
필드 주입
생성자, 매소드, 필드 주입 모두
Java 타입간의 매핑(또는 변환)을 간단하게 작성하기 위해 사용하는 라이브러리는?
Lombok
Hamcrest
Springfox
Mapstruct
테스트 케이스 작성 시 실제 구현체가 아닌 가짜 구현체를 편리하게 작성하기 위해 사용하는 라이브러리는?
Lombok
Hamcrest
Mockito
Mapstruct
Spring Boot App에서 설치 없이 간편하게 데이터베이스 기능을 사용할 수 있게 해주는 라이브러리는?
Lombok
Hamcrest
Mockito
H2
SQL을 기반으로 Java 객체를 맵핑해 주는 Presistence Framework 는?
MyBatis
JPA
Lombok
H2
REST API 설계 시 새로운 리소스를 생성할 때 사용하는 HTTP Method는?
GET
PUT
POST
DELETE
여러 연산의 집합을 하나의 논리적인 단위로 구성하는 것은?
Batch
Transaction
Spring Bean
Dependency Injection
REST API 설계 시 기존 리소스를 업데이트할 때 사용하는 HTTP Method 는?
GET
PUT
POST
DELETE
다음 중 멱등성(Idempotency) 을 제공하지 않는 HTTP Method 는?
GET
PUT
POST
DELETE
컨테이너를 실행하기 위해서는 컨테이너 이미지가 필요합니다.
이 컨테이너 이미지를 저장하고 공유/배포하기 위한 저장소를 무엇이라고 하나요?
스위치 허브 (Switch Hub)
도커파일 (Dockerfile)
컨테이너 레지스트리
(Container reqistry)
볼륨
(Volume)
대표적인 가상화 기술로는 VM(Virtual Machine)과 Container 가 있습니다.
VM 과 Container 중 OS 커널 영역을 공유하고, 리소스 사용량이 더 적은것은
무엇인가요?
VM (Virtual Machine)
컨테이너 (Container)
쿠버네티스 자체가 제공하는 기능이 아닌것은 무엇인가요?
컨테이너의 자동 배포/롤백
컨테이너의 자동 복구
즉시 사용 가능한 Database 서비스
서비스의 Discovery 및 Loadbalancing
쿠버네티스 자체가 제공하는 기능이 아닌것은 무엇인가요?
컨테이너의 자동 배포/롤백
컨테이너의 자동 복구
즉시 사용 가능한 Database 서비스
서비스의 Discovery 및 Loadbalancing
다음 설명을 포함하는 Kubernetes 의 워크로드는 무엇인가요?
- 지정된 Docker 이미지의 Container 를 배포한다
- 지정된 개수만큼의 복제본을 만든다
- 배포된 Container 의 롤백이 가능하다
POD
ReplicaSet
Deployment
Service
다음 중 Kubernetes Cluster 외부의 Client 가 Cluster 내부의 POD 에 접근하기 위한
방법이 아닌것은 무엇인가요?
ClusterIP Service
NodePort Service
Loadbalancer Service
Ingress
VPC는 기본적으로 외부(인터넷)과 통신이 단절되어 있습니다. VPC가 외부 인터넷과
통신하기 위해 필요한 서비스는 어느 것 일까요?
NAT gateway
Internet Gateway
Route53
subnet
VPC 내에 프라이빗 서브넷에 생성한 instance에서 소프트웨어 패키지 업데이트를 위해 인터넷에 접근해야 한다. 다음 중 올바르게 조치한 답을 고르세요.
1. NAT gateway를 퍼블릭 서브넷에 생성한 후 프라이빗 서브넷에 연결된 라우팅 테이블에서 0.0.0.0/0을 목적지 주소로 하는 트래픽에 대해 NAT gateway id로 설정한다.
2. 인스턴스가 속한 프라이빗 서브넷에 연결되 라우팅 테이블에서 0.0.0.0/0을 목적지 주소로 하는 트래픽에 대해 Internet Gateway id로 설정한다.
3. NAT gateway를 인스턴스가 속한 프라이빗 서브넷에 생성한 후 프라이빗 서브넷에 연결된 라우팅 테이블에서 0.0.0.0/0을 목적지 주소로 하는 트래픽에 대해 NAT gateway id로 설정한다.
4. instance에 Elastic IP를 할당한다.
1
2
3
4
Amazon Web Service(AWS)에서 제공하는 매니지드 쿠버네티스 서비스에서
관리해주는 쿠버네티스 구성 요소가 아닌것을 고르세요.
API server
coreDNS
etcd
worker node instance type
terraform에서는 작성된 코드로 적용할 인프라 내역을 사전에 검토할 수 있습니다.
이를 수행하기 위한 명령어가 무엇인지 고르시오.
terraform apply
terraform state
terraform plan
terraform validate
terraform 도구에 대한 설명으로 잘못된 것을 고르시오.
생성할 자원의 의존성을 고려하여 순차적인 코드로 작성한다.
tfstate 확장자를 가진 파일은 자동으로 생성된다.
선언적(Declarative) 언어의 특징을 가진 오픈소스 소프트웨어이다.
init, plan, apply 순서의 워크플로우를 제공한다.
EC2 자원을 생성하는 로컬 환경의 테라폼 코드와 tfstate file, 인프라 환경이 동기화된
상태이다. 만약 tfstate file을 누군가 삭제한 후, 기존의 테라폼 코드를 다시 실행(apply)
하면 인프라가 어떻게 변경될지 고르시오
어떤 변경도 발생되지 않는다.
생성된 EC2는 삭제된다.
새로운 EC2가 생성된다.
생성된 EC2가 삭제되고 새로운 EC2가 생성된다.
쿠버네티스 매니페스트 파일(쿠버네티스의 오브젝트를 생성하기 위한 메타 정보를
YAML이나 JSON으로 기술한 파일)을 쿠버네티스 클러스터에 배포하는 pull 방식의
배포 도구를 고르세요.
grafana
jenkins
terraform
argoCD
GitOps의 방법론을 올바르게 실천하지 못한 예를 아래에서 고르세요.
1. 빌드 완료 후에 생성된 신규 어플리케이션 이미지를 빌드/배포 서버에서 쿠버네티스 환경에 kubectl 명령어를 통해 배포하도록 구성.
2. 쿠버네티스 매니페스트 파일을 변경 시 main branch에서 바로 작업하지 않고, 신규 브랜치 생성 후
main branch로 Pull Request, Merge 과정을 거쳐 운영 환경에 배포하도록 구성.
3. 어플리케이션 소스코드 Git repository와 쿠버네티스 매니페스트 Git Repository를 분리하여 구성.
4. argoCD, fluxCD와 같은 pull 방식의 agent를 쿠버네티스에 배포하여 구성.
1
2
3
4
서비스 메쉬 서비스인 Istio의 트래픽 라우팅과 관련이 없는 resource를 하나를 고르세요.
virtual service
destination rule
gateway
NAT gateway
마이크로 서비스 컴포넌트 간 트래픽과 서비스 메쉬를 시각화 및 모니터링 할 수 있는
도구는 다음 중 어느것인지 고르세요.
kiali
prometheus
elastic search
grafana
데이터 마이그레이션 프로세스는 크게는 이관 전-이관-이관 후로 나눌 수 있다.
다음중 이관 전 단계에 해당되지 않는 것은?
검증 단계
평가 및 변환 단계
탐색 단계
계획 단계
Oracle, PostgreSQL은 모두 테이블, 컬럼 등 객체 이름을 대문자로 변환하여 저장한다.
Oracle, PostgreSQL은 모두 테이블, 컬럼 등 객체 이름을 대문자로 변환하여 저장한다.Oracle의 문자열 컬럼에 ''(빈문자열)을 입력하면 null으로 인식한다.
AWS에서 스키마를 변환하는 데 도움을 주는 Tool의 이름을 고르세요.
CDC
SCT
DMS
DMA
AWS, MS Azure, GCP는 모두 데이터 마이그레이션을 위한 서비스를 제공한다.
public subnet 에 생성된 EC2 에서 인터넷 연결이 안된고 있다
무엇을 해야하는가?
1. public route table 에서 목적지 10.0.0.0/16이 NAT gateway 로 라우팅되어 있는지 확인
2. private route table 에서 목적지 0.0.0.0/0이 NAT gateway 로 라우팅되어
있는지 확인
3. public route table 에서 목적지 0.0.0.0/0이 Internet gateway 로 라우팅되어
있는지 확인
4. private route table 에서 목적지 10.0.0.0/16이 Internet gateway 로 라우팅되어
있는지 확인
1
2
3
4
쿠버네티스의 완전한 관리형 서비스인 EKS(Elastic Kubernetes Service) 에 대한
설명으로 잘못된 것을 고르시오
AWS 에서 Control plane 을 관리한다
ekctl 명령어를 통해서 POD 상태를 조회한다
AWS 의 IAM 서비스 연계하여 인증처리를 수행한다
AWS 에서 Data plane 의 인스턴스 성능은 관리하지 않는다.
AWS 에서 10.10.10.0/28 로 설정한 VPC 가 있다. VPC 안에 사용할수 있는
Private IP 는 몇개인지 고르시오
11개
12개
13개
14개
Public Subnet에 있는 EC2 자원은 NAT Gateway를 통해서 연결된다.
Bastion Server(EC2)는 Private Subnet에 있는 Admin Server(EC2) 를 접속하는
통로일 뿐이다.
AWS 에서 10.0.0.0/28 CIDR로 구성된 서브넷이 있다.
해당 서브넷에서 사용가능한 Private IP는 총 11개이다.
EKS 에 생성된 pod 정보를 조회하기 위해서는 ekctl get pod 명령을 실행한다
EKS 는 Worker node 의 인스턴스 성능을 관리해준다.
테라폼은 생성할 자원의 의존성을 고려하여 순차적으로 코드를 작성해야 한다.
테라폼은 Windows, Mac, Linux 운영체제에서 수행가능한 오픈소스 소프트웨어이다.
IaC 코드를 간소화하기 위해서 vars.tf 파일없이 terraform.tfvars 파일안에
필요한 변수를 정의하고 변수 값을 할당할 수 있다.
terraform apply 수행 시의 출력 결과에는 terraform plan 수행결과가 포함된다.
테라폼이 제공하는 일반적인 워크플로우 순서는
terraform init -> terraform plan -> terraform apply 이다.
EC2 자원을 생성하는 Local Code 와 tfstate file, Infra 환경이
동기화된 상태에서 tfstate 파일을 실수로 삭제했다.
Local Code를 다시 실행(apply)하면 새로운 EC2 자원이 생성된다.
Terraform의 Child module에서 작성한 output 코드는 주로 출력하기 위해서 작성한다.
Git은 Distributed Version Controll System이다.
git commit 명령어를 통해 local repo에 저장되는 파일은 staging area에 저장된 파일이다.
GitOps의 대상은IaC만으로 한정된다.
GitOps를 적용할 때 변경사항은 Engineer가 Infra에 직접 접속하여 반영한다.
GitOps에서 Continuous Deployment로는 Push Type과 Pull Type 모두 가능하다.
아래 예시에서 생성되는 Region은?
$ vi vars.tf
variable "aws_region" {
default = "ap-northeast-1"
type = string
}
$ vi terrform.tfvars
aws_region = "ap-northeast-2"
resource_prefix = "emarket-demo"
ap-northeast-1
ap-northeast-2
Prometheus는 "Pull" 방식의 모니터링 도구이다.
http_request_total offset 3m
위 PromQL의 의미는
"Metric Name이 http_request_total인
시계열 데이터의 지난 3분 동안 수집된 값을 선택한다" 이다.
Elasticsearch의 "Field"는 데이터 저장 최소 단위로 RDB의 Row와 Mapping 되는 개념이다.
OpenItacing의 개념에서 하나의 Tracesms 여러 개의 Span으로 구성될 수 있다.
Spring Boot 의 장점이 아닌 것은 ?
어플리케이션 개발 시 Dependency 라이브러리 설정을 일일이 추가해야 한다
내장 WAS(Tomcat, Jetty 등)을 포함하고 있어 별도 설치없이 서버를 구동시킬 수 있다
독립적으로 실행가능한 JAR 파일을 패키징하여 웹 어플리케이션을 실행할수 있다
프로젝트에 추가된 라이브러리 기반으로 실행에 필요한 환경을 자동으로 설정해준다
Spring Boot 에서 사용되는 라이브러리 의존성(Dependency) 관리도구를 선택하세요
Maven, Gradle
Helm
Yum, APT
npm
다음 내용과 가장 부합되는 기술을 선택하세요
- Representation State Transfer 의 약자로 소프트웨어 프로그램 아키택처의 한 형식
- 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기때문에 웹의 장점을
최대한 활용할 수 있는 아키텍쳐 스타일
WWW (Workd Wide Web)
Swagger
JSON
REST
REST 에 대한 설명중 틀린것은?
1. HTTP URI 를 통해 자원을 명시하고, HTTP Method (POST, GET, PUT, DELETE) 를 통해 해당 자원에 대한 CRUD OPERATION을 적용
2. 월드와이드웹(WWW) 과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍쳐의 한 형식
3. 웹의 모든 자원에 고유한 ID 인 HTTP URI 를 부여
4. REST API 에서 사용되는 요청/응답 메시지는 JSON 포맷으로 표준화되어 있다
1
2
3
4
Spring Boot 에서 개발을 하는것은 주로 어떤 것을 하는 것인가?
Spring Bean 의 구현 및 등록
Spring IoC Container 구현
Spring Framework 를 직접호출하여 구현
EJB (Enterprise Java Bean) 구현
Database 에 대한 정보조회 및 수정을 하기위해 사용하는 Persistence Framework는?
Spring Security
Springfox
MyBatis
JUnit
REST API 를 설계할때 사용하는 도구는?
Swagger Code Generator
Swagger Editor
Swagger UI
Springfox
JWT 에 대한 설명으로 틀린것은?
JWT는 한번 서명되면 내용을 변경할 수 없다.
JWT는 ID만 가지고있고, 추가정보는 내부 DB 에 저장한다.
JWT는 Stateless 한 서비스개발에 유용하다.
WT는 HEADER + PAYLOAD + SIGNATURE 로 구성된다.
Java 에서 단위테스트를 작성하기 위해서 사용하는 라이브러리는?
JWT
Spring Security
MyBatis
JUnit
단위테스트를 작성할때 테스트 대상이 되는 클래스 외에 의존성을 가진 다른 클래스의
Mock-Up을 편리하게 작성하게 해주는 라이브러리는?
Mockito
JUnit
Hamcrest
AssertJ
다음은 6R의 설명이 틀린 것은?
Rehosting : Lift & Shift
Replatforming : 클라우드 기반으로 변경하여 옮김(Container화, RDS 적용)
Refactoring : 클라우드에 맞게 Application을 수정하여 최적화(MSA, NoSQL, Ojbect Storage 적용)
Repurchase : 기존 시스템 폐기 및 SaaS 솔루션 선정 및 도입
Retain : 시스템을 폐기하고 운영 종료
Application Modernization 장점이 아닌 것은?
API 기반의 Microservice 구조를 통해 확장성과 유연성을 확보
Kubernetes 기반 Container 환경에서 자동화된 방식으로 운영
DevOps 체계로 지속적이면서 신속한 개선이 가능
사용자 편의성이 높은 MPA(Multiple Page Application) 방식의 웹앱과 Mobile UI가 포함
Cloud Native의 설명이 잘못된 것은?
클라우드 기반 Immurable Infrastructure 제공을 통해 회복성과 탄력성 확보
Kubernetes 기반 Container 환경에서 수작업 방식으로 운영
API 기반 Microservice 구조를 통해 확장성과 유연성 확보
DevOps 체계로 지속적이면서 신속한 개선이 가능
MSA 구축시 고려 사항이 아닌 것은?
서비스 분할에 대한 점진적인 접근을 통해 그 효과를 체크하고 분할한다.
MSA 로 원할하게 개발하고 운영하기 위한 기반 시스템과 인프라 준비가 필요하다
조직 문화 및 지속적인 변경과 배포를 위한 DevOps/Agile 체계는 불필요하다
Architecture Style, Design Patterns, Reference Architecture, Quality Attribute
MSA 기반 Cloud Native Application 구현 단계별 테스크가 잘못된 것은?
1. 도입검토 : MSA 도입 요건 파악, 도입 적합성 검토, 서비스 후보 대상 도출
2. 분석 : 아키텍처 전략 수립 및 개발 표준 정의, Inner 아키텍처 구조 설계, Outer 아키텍처 구성 설계
3. 설계 : 서비스 기능 상세 설계, 서비스 배포 체계 설계(★), 서비스 개발표준 정의
4. 구축 : 코딩, 테스트
1
2
3
4
다음에 해당하는 서비스 단계는 무엇인가?
-서비스 후보 간 호출 가능성 및 DB 연관도 등 Dependency 분석과 기술적 관점을 고려하여 서비스 재구성
서비스 후보 정의
서비스 식별
서비스 검증
서비스 확정
다음에 해당하는 상호작용 스타일은?
- 클라이언트는 서비스에 일방으로 요청
요청/응답
요청/비동기 응답
알림
발행/구독
발행/비동기 응답
Microservice 도입시 데이터 아키텍처 고려 사항이 잘못된 것은?
소스 코드 분리는 어렵지만, 데이터 분산 및 분리는 쉬움
런타임에 데이터 구조를 바꾸기가 어려움
공유 데이터 변경이 어려움
데이터일관성을 유지하는 것이 어려움
API Gateway의 설명이 잘못된 것은?
다양한 클라이언트가 다양한 서비스에 액세스하기 위한 단일 진입점 제공
API Gateway는 단일 layer로 구성되어야 한다.
API Gateway는 뒷단의 서비스를 묶는 역할을 할 수 있다.
API Gateway는 공통 기능을 제공해 줄 수 있다.
