이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

소득공제
스프링 5.0 마스터
스프링 부트, 스프링 클라우드, 마이크로서비스, 리액티브, 코틀린까지
베스트
IT 모바일 top100 6주
가격
36,000원
10 32,400
YES포인트?
1,800원 (5%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요
  • 본 도서의 개정판이 출간되었습니다.

이미 소장하고 있다면 판매해 보세요.

  •  해외배송 가능?
  •  문화비소득공제 가능

에이콘- 오픈소스 프로그래밍 시리즈

책소개

목차

1장. 스프링 프레임워크 5.0의 발전

스프링 프레임워크
EJB 관련 문제점
스프링 프레임워크가 인기 있는 이유는 무엇일까?
단순화된 단위 테스트
복잡한 코드 감소
스프링 프레임워크는 어떻게 마법을 부릴까?
아키텍처의 유연성
변화하는 시대를 선도함
스프링 모듈
스프링 코어 컨테이너
횡단 관심
웹
비지니스
데이터
스프링 프로젝트
스프링 부트
스프링 클라우드
스프링 데이터
스프링 배치
스프링 시큐리티
스프링 HATEOAS
스프링 프레임워크 5.0 새로운 기능
기준선 업그레이드
JDK 9 런타임 호환성
스프링 프레임워크 코드에서 JDK 8 기능 사용
리액티브 프로그래밍 지원
함수형 웹 프레임워크
직소를 사용한 자바 모듈성
코틀린 지원
삭제된 기능
스프링 부트 2.0의 새로운 기능
요약


2장. 의존성 주입

DI 이해하기
의존성 이해하기
스프링 IoC 컨테이너
빈과 와이어링 정의
스프링 IoC 컨테이너 생성
애플리케이션 콘텍스트에 대한 자바 구성
애플리케이션 콘텍스트의 XML 구성
스프링 콘텍스트를 사용해 JUnit 작성하기
모크 단위 테스트
컨테이너 관리 빈
DI 유형
setter 주입
생성자 주입
생성자 대 설정자 주입
스프링 빈 스코프
자바 대 XML 구성
@Autowired 어노테이션
@Primary 어노테이션
@Qualifier 어노테이션
기타 중요한 스프링 어노테이션
콘텍스트 및 DI 탐색
CDI의 예
요약


3장. 스프링 MVC 웹 애플리케이션 구축

자바 웹 애플리케이션 아키텍처
모델 1 아키텍처
모델 2 아키텍처
모델 2 프런트 컨트롤러 아키텍처
기본 플로
기존 설정
스프링 MVC에 대한 의존성 추가하기
DispatcherServlet을 web.xml에 추가하기
스프링 콘텍스트 생성하기
플로 1 - 뷰 없는 간단한 컨트롤러 플로
스프링 MVC 컨트롤러 생성하기
웹 애플리케이션 구동
단위 테스트
플로 2 - 뷰를 가진 간단한 컨트롤러 플로
스프링 MVC 컨트롤러
뷰 생성하기 - JSP
단위 테스트
플로 3 - 모델이 있는 뷰로 전환하는 컨트롤러
스프링 MVC 컨트롤러
뷰 생성하기
단위 테스팅
플로 4 - ModelAndView를 사용해 뷰로 전환하는 컨트롤러
스프링 MVC 컨트롤러
뷰 생성하기
단위 테스팅
플로 5 - 폼이 있는 뷰로 전환하는 컨트롤러
명령 또는 폼 백엔드 오브젝트 작성하기
폼을 표시하는 컨트롤러 메서드
폼을 가진 뷰 생성하기
컨트롤러가 폼 제출을 처리하는 메서드를 가져오기
단위 테스팅
플로 6 - 이전 플로에 유효성 검증 추가하기
하이버네이트 벨리데이터 의존성
빈에 대한 간단한 검증
커스텀 벨리데이션
유닛 테스팅
스프링 MVC의 개요
중요 기능
어떻게 작동할까?
스프링 MVC의 핵심 개념
RequestMapping
요청 매핑 예제
요청 매핑 메서드 - 지원되는 메서드 인수
RequestMapping 메서드 - 지원되는 리턴 유형
뷰 리솔루션
JSP 뷰 리졸버 구성하기
프리마커 구성
핸들러 매핑과 인터셉터
HandlerInterceptor 정의하기
HandlerInterceptor를 핸들러에 매핑
모델 속성
세션 속성
세션에 속성 추가하기
세션에서 속성 읽기
세션에서 속성 제거
InitBinders
@ControllerAdvice 어노테이션
스프링 MVC - 고급 기능
예외 처리
컨트롤러 전반의 일반적인 예외 처리
컨트롤러의 특정 예외 처리
국제화
메시지 번들 설정
SessionLocaleResolver 설정
CookieLocaleResolver 설정
스프링 컨트롤러 통합 테스트
정적 자원 제공
정적 콘텐츠 노출
정적 콘텐츠 캐싱
정적 콘텐츠의 GZip 압축 사용
스프링 MVC와 부트스트랩의 통합
메이븐 의존성으로서의 부트스트랩 WebJar
스프링 MVC 리소스 핸들러로 WebJar 정적 콘텐츠 전달하기 설정
JSP에서 부트스트랩 리소스 사용하기
스프링 시큐리티
스프링 보안 의존성 추가하기
모든 요청을 인터셉트하도록 필터 설정
로그아웃
요약


4장. 마이크로 아키텍처 및 클라우드-네이티브 애플리케이션으로의 진화

스프링을 이용한 일반적인 웹 애플리케이션 아키텍처
웹 계층
웹 애플리케이션 - HTML 뷰 렌더링
RESTful 서비스
비즈니스 계층
데이터 계층
통합 계층
횡단 관심
스프링에 의해 해결된 문제
느슨한 커플링 및 테스트 가능성
복잡한 코드
경량 아키텍처
유연한 아키텍처
횡단 관심의 간편한 구현
디자인 패턴
애플리케이션 개발 목표
속도
안전
신뢰성
가용성
보안
성능
높은 복원력
확정성
모놀리식 애플리케이션 문제
긴 릴리스 주기
확장의 어려움
새로운 기술 적용
새로운 방법론 적용
현대적인 개발 사례 적용
마이크로서비스 이해
마이크로서비스는 무엇인가?
마이크로서비스 아키텍처
마이크로서비스 특성
작고 가벼운 마이크로서비스
메시지 기반 커뮤니케이션과의 상호 운용성
용량 할당 마이크로서비스
독립적으로 배포 가능한 유닛
무상태
자동화된 빌드 및 릴리스 프로세스
이벤트-드리븐 아키텍처
독립된 팀
마이크로서비스 장점
출시 시간 단축
기술 진화
가용성 및 확장성
팀 동력
마이크로서비스 문제
자동화에 대한 필요성 증가
서브 시스템의 경계 정의
가시성 및 모니터링
결함 허용
영속적 일관성
운영 팀에 대한 필요성 증가
클라우드-네이티브 애플리케이션
12-팩터 앱
코드베이스 유지
의존성
환경 설정
백엔드 서비스
빌드, 릴리스, 실행
무상태
포트 바인딩
동시성
처분 가능성
환경 평가
이벤트 스트림 로그
구분 없는 어드민 프로세스
스프링 프로젝트
스프링 부트
스프링 클라우드
요약


5장. 스프링 부트로 마이크로서비스 구축

스프링 부트는 무엇인가?
마이크로서비스로 빠르게 프로토타입 구축
기본 목표
비기능적인 특징
스프링 부트 Hello World
spring-boot-starter-parent 설정
spring-boot-starter-parent
필요한 스타터 프로젝트를 사용해 pom.xml 구성
스타터 프로젝트 이해하기
spring-boot-maven-plugin 설정
첫 스프링 부트 구동 클래스 생성
SpringApplication 클래스
@SpringBootApplication 어노테이션
Hello World 애플리케이션 구동
자동 설정
스타터 프로젝트
REST는 무엇인가?
첫 REST 서비스
문자열을 반환하는 간단한 메서드
단위 테스팅
통합 테스팅
객체를 반환하는 간단한 REST 메서드
요청 실행
단위 테스팅
통합 테스팅
경로 변수를 가진 Get 메서드
요청 실행
단위 테스팅
통합 테스팅
todo 리소스 생성
메서드, 오퍼레이션, URI 요청
빈들과 서비스들
Todo 리스트 검색
서비스 실행
단위 테스팅
통합 테스팅
특정 Todo의 세부 정보 검색
서비스 실행
단위 테스팅
통합 테스팅
Todo 추가
포스트맨
POST 서비스 실행
단위 테스팅
통합 테스트
스프링 이니셜라이저
첫 스프링 이니셜라이저 프로젝트 생성
Pom
FirstSpringInitializrApplication.java 클래스
FirstSpringInitializrApplicationTests 클래스
자동 설정 확인
요약


6장. 마이크로서비스 확장

예외 처리
스프링 부트 기본 예외 처리
존재하지 않는 리소스
예외를 발생시키는 리소스
커스텀 예외 발생시키기
커스텀 예외 메시지
응답 상태
HATEOAS
응답에 HATEOAS 링크 정보 보내기
스프링 부트 스타터 HATEOAS
벨리데이션
컨트롤러 메서드 벨리데이션 활성화
빈 벨리데이션 정의
단위 테스팅 벨리데이션
REST 서비스 문서화
Swagger 명세서 생성
Swagger UI
어노테이션을 사용한 커스텀 Swagger 문서
스프링 시큐리티로 REST 서비스 보호
스프링 시큐리티 스타터 추가
기본 인증
통합 테스팅
단위 테스팅
OAuth 2 인증
하이-레벨 플로
서비스를 OAuth 2로 인증 구현
국제화
캐싱
Spring-boot-starter-cache
캐싱 활성화
데이터 캐싱
JSR-107 캐싱 어노테이션
자동 감지 순서
요약


7장. 고급 스프링 부트 기능

외형화된 구성
application.properties를 통한 프레임워크 커스텀
로깅
임베디드 서버 구성
스프링 MVC
스프링 스타터 시큐리티
데이터 소스, JDBC와 JPA
기타 구성 옵션
application.properties의 커스텀 속성
구성 등록 정보 - 타입세이프(type-safe) 구성 관리
프로파일
프로파일-기반 빈 구성
애플리케이션 구성값에 대한 기타 옵션
YAML 구성
임베디드 서버
제티 및 언더토우 전환
WAR 파일 만들기
개발자 도구
실시간 리로드
스프링 부트 엑추에이터
HAL 브라우저
구성 속성
환경 세부 정보
상태
매핑
빈즈
측정 항목
자동 구성
디버깅
클라우드에 애플리케이션 배포
클라우드 파운드리
요약


8장. 스프링 데이터

백그라운드 - 데이터 저장소
스프링 데이터
스프링 데이터 커먼즈
리포지토리
CrudRepository 인터페이스
PagingAndSortingRepository 인터페이스
스프링 데이터 JPA
스프링 데이터 JPA 예제
엔티티
간단한 저장소
CrudRepository 인터페이스
PagingAndSortingRepository 인터페이스
쿼리 메서드
쿼리들
스프링 데이터 Rest
GET 메서드
POST 메서드
검색 리소스
빅데이터
몽고DB
단위 테스트
요약


9장. 스프링 클라우드

스프링 클라우드 소개
스프링 클라우드 넷플릭스
데모 마이크로서비스 설정
마이크로서비스 A
서비스 소비자
포트
중앙 집중식 마이크로서비스 구성
문제 기술
해결책
옵션
스프링 클라우드 컨피그
스프링 클라우드 컨피그 서버 구현
스프링 클라우드 버스
스프링 클라우드 버스의 필요성
스프링 클라우드 버스를 사용해 구성 변경 전파
구현
선언적 REST 클라이언트 - 페인
로드 균형 조정
립본
구현
네임 서버
마이크로서비스 URL 하드 코딩의 한계
네임 서버 작동
옵션
구현
유레카 서버 세팅
유레카에 마이크로서비스 등록
유레카와 서비스 소비자 마이크로서비스 연결
API 게이트웨이
주울로 클라이언트 측 로드 밸런싱 구현하기
새로운 주울 API 게이트웨이 서버 설정
주울 API 게이트웨이를 사용하도록 서비스 소비자 구성
분산 추적
분산 추적 옵션
스프링 클라우드 슬루스와 집킨 구현하기
스프링 클라우드 슬루스와 마이크로서비스 컴포넌트 통합
집킨 분산 추적 서버 설정
집킨과 마이크로서비스 구성 요소 통합
히스트릭스 - 내결함성
구현
요약


10장. 스프링 클라우드 데이터 플로

메시지 기반 비동기 통신
비동기 통신의 복잡성
비동기 메시지용 스프링 프로젝트
스프링 통합
스프링 클라우드 스트림
스프링 클라우드 데이터 플로
스프링 클라우드 스트림
스프링 클라우드 스트림 아키텍처
이벤트 처리 - 주식 거래 예제
주식 거래 예제 위한 모델
소스 애플리케이션
프로세서
싱크
스프링 클라우드 데이터 플로
높은 수준의 아키텍처
스프링 클라우드 데이터 플로 구현하기
스프링 클라우드 데이터 플로 서버 설정하기
데이터 플로 셸 프로젝트 설정
앱 구성
스트림 구성
스트림 배포
로그 메시지 - 메시지 팩토리에 대한 연결 설정
로그 메시지 - 이벤트 플로
스프링 클라우드 데이터 플로 REST API
스프링 클라우드 테스크
요약


11장. 리액티브 프로그래밍

리액티브 선언
리액티브 시스템의 특성
반응적 사용 사례 - 주가 페이지
전통적인 방식
리액티브 방식
전통적인 방식과 리액티브 방식의 비교
자바의 리액티브 프로그래밍
리액티브 스트림
리액터
모노
플럭스
스프링 웹 리액티브
스프링 이니셜라이저를 사용해 프로젝트 만들기
리액티브 컨트롤러 만들기
HTML 보기 만들기
SpringReactiveExampleApplication 실행
리액티브 데이터베이스
스프링 부트 리액티브 몽고DB 스타터 통합하기
모델 오브젝트 생성 - Stock 도큐멘트
ReactiveCrudRepository 만들기
명령-행 러너를 사용해 주식 데이터 초기화하기
레스트 컨트롤러에서 리액티브 함수 만들기
이벤트 스트림에 가입하기 위해 뷰 업데이트하기
SpringReactiveExampleApplication 실행 중
요약


12장. 스프링 모범 사례

메이븐 표준 디렉터리 레이아웃
계층화된 아키텍처
권장 사례
중요한 레이어에 대한 API와 impl 분리
예외 처리
예외 처리에 대한 스프링의 접근 방식
권장 접근법
스프링 구성 간결하게 유지
컴포넌트 스캔에서 basePackageClasses 특성 사용
스키마 참조에서 버전 번호를 사용하지 않음
필수 의존성에 대한 setter 인젝션보다 생성자 인젝션을 선호한다
스프링 프로젝트의 의존성 버전 관리하기
단위 테스트
비즈니스 레이어
웹 레이어
데이터 레이어
기타 모범 사례
통합 테스트
스프링 세션
예제
스프링 세션에 대한 의존성 추가하기
HttpSession을 스프링 세션으로 대체하기 위한 필터 설정하기
AbstractHttpSessionApplicationInitializer를 확장해 톰캣에 대한 필터링 사용
캐싱
스프링 부트 스타터 캐시 의존성 추가하기
캐싱 어노테이션 추가하기
로깅
로그백
Log4j2
프레임워크 독립 구성
요약


13장. 스프링에서 코틀린 개발

코틀린
코틀린 대 자바
변수 및 형식 추론
변수 및 불변성
타입 시스템
함수들
배열
컬렉션
확인되지 않은 예외 처리
데이터 클래스
이클립스에서 코틀린 프로젝트 만들기
코틀린 플러그인
코틀린 프로젝트 만들기
코틀린 클래스 만들기
코틀린 클래스 실행
코틀린을 사용해 스프링 부트 프로젝트 만들기
의존성 및 플러그인
스프링 부트 애플리케이션 클래스
스프링 부트 애플리케이션 테스트 클래스
코틀린을 사용해 REST 서비스 구현하기
문자열을 리턴하는 간단한 메서드
단위 테스트
통합 테스트
객체를 반환하는 간단한 REST 메서드
요청 실행
단위 테스트
통합 테스트
경로 변수로 메서드 가져오기
요청 실행
단위 테스트
통합 테스트
요약

저자 소개 3

저랑가 라오 카라남

관심작가 알림신청
 

Ranga Rao Karanam

프로그래머, 강사 및 시스템 설계자다. 관심 분야는 클라우드 네이티브 애플리케이션, 마이크로서비스, 진화론적 설계, 고품질 코드, 데브옵스(DevOps), BDD1, TDD2, 리팩토링이다. 컴포넌트 기반의 클라우드 네이티브 애플리케이션을 사용하고 BDD 같은 현대적 개발 관행을 따르며, 지속적 전달(배포), 데브옵스 등 확장성 개발과 관련된 스타트업 컨설팅, 스프링 프레임워크가 개발 중인 엔터프라이즈 자바 애플리케이션에 부여해주는 자유를 좋아한다. 클라우드 네이티브 자바 애플리케이션 개발에 대한 고품질의 강의를 만드는 in28minutes3에서 시작했으며, Udemy4 학생 7
프로그래머, 강사 및 시스템 설계자다. 관심 분야는 클라우드 네이티브 애플리케이션, 마이크로서비스, 진화론적 설계, 고품질 코드, 데브옵스(DevOps), BDD1, TDD2, 리팩토링이다. 컴포넌트 기반의 클라우드 네이티브 애플리케이션을 사용하고 BDD 같은 현대적 개발 관행을 따르며, 지속적 전달(배포), 데브옵스 등 확장성 개발과 관련된 스타트업 컨설팅, 스프링 프레임워크가 개발 중인 엔터프라이즈 자바 애플리케이션에 부여해주는 자유를 좋아한다. 클라우드 네이티브 자바 애플리케이션 개발에 대한 고품질의 강의를 만드는 in28minutes3에서 시작했으며, Udemy4 학생 7만 5,000명, 유튜브 3만 5,000명의 구독자를 갖고 있다. 크리켓 게임을 즐기고 하이킹을 좋아한다. 꿈은 히말라야 산맥에서 1년 동안 하이킹을 하는 것이다.
자바 백엔드 엔지니어로 웹/모바일 플랫폼을 개발해왔으며, 현재 소프트웨어 아키텍트로 자바와 Node.js를 사용해 IoT 솔루션을 개발하고 있다. 한국 제이보스 유저 그룹(KJBUG, Korea JBoss User Group) 멤버로 활동하고 있으며, 실시간 빅데이터 분석 및 블록체인에 관심이 많다.
2004년 게임 사에서 커머스 서비스 개발을 시작으로 멤버십, 빌링 등과 같은 웹 플랫폼 서비스를 개발했으며, 현재 모바일 플랫폼 서비스 개발하고 있다. 근무 외 시간에는 앱 개발 콘테스트 멘토링, 스타트업 기술 자문 등 다양한 활동에 참여하고 있으며, 경력의 많은 부분을 자바 기반의 스프링과 함께 하고 있다.

품목정보

발행일
2018년 08월 20일
쪽수, 무게, 크기
586쪽 | 1083g | 188*235*26mm
ISBN13
9791161751825

출판사 리뷰

-스프링 프레임워크 5.0의 새로운 기능
-스프링 부트로 마이크로서비스 구축
-애플리케이션을 효과적으로 개발하고 모니터하기 위한 스프링 부트의 고급 기능 이해
-스프링 클라우드를 사용해 클라우드에 애플리케이션 배치 및 관리
-스프링 데이터 및 스프링 클라우드 데이터 플로우 이해
-리액티브 프로그래밍의 기초 이해
-스프링 프레임워크로 애플리케이션을 개발할 때의 모범 사례
-코틀린을 사용해 새 프로젝트를 만들고 단위 및 통합 테스트를 사용해 몇 가지 기본 서비스 구현

1장, ‘스프링 프레임워크 5.0의 발전’에서는 초기 버전에서 스프링 5.0에 이르는 스프링 프레임워크의 발전 과정을 알려준다. 스프링은 초창기에 의존성 주입과 핵심 모듈을 사용해 테스트 가능한 애플리케이션을 개발하는 데 사용됐다. 스프링 부트(Spring Boot), 스프링 클라우드(Spring Cloud), 스프링 클라우드 데이터 플로(Spring Cloud Data Flow) 같은 최근 스프링 프로젝트는 애플리케이션 인프라를 다루고 애플리케이션을 클라우드로 이동시킨다. 다양한 스프링 모듈과 프로젝트에 대한 개요를 살펴보자.

2장, ‘의존성 주입’에서는 의존성 주입에 대해 자세히 설명한다. 스프링에서 사용할 수 있는 다양한 종류의 의존성 주입 방법과 오토와이어링이 어떻게 삶을 편리하게 하는지 살펴볼 것이다. 단위 테스트에 대해서도 간략하게 살펴본다.

3장, ‘스프링 MVC 웹 애플리케이션 구축’에서는 스프링 MVC를 사용해 웹 애플리케이션을 빌드하는 방법을 간략히 설명한다.

4장, ‘마이크로서비스 및 클라우드-네이티브 애플리케이션으로의 진화’에서는 지난 10년간 애플리케이션 아키텍처의 진화를 설명한다. 마이크로서비스와 클라우드-네이티브 애플리케이션이 필요한 이유를 이해하고, 클라우드-네이티브 애플리케이션을 구축하는 데 도움이 되는 다양한 스프링 프로젝트를 간략하게 살펴본다.

5장, ‘스프링 부트로 마이크로서비스 구축’에서는 스프링 부트가 출시 수준의 스프링 기반 애플리케이션을 만드는 데 방해가 되는 복잡성을 어떻게 제거하는지 설명한다. 스프링 기반 프로젝트를 시작하기 쉽고, 타사 라이브러리와 쉽게 통합할 수 있다. 이 장에서는 스프링 부트로 여행하는 학생들을 데려갈 것이다. 기본 웹 서비스를 구현한 후 캐싱, 예외 처리, HATEOAS 및 국제화 기능을 추가하는 한편, 스프링 프레임워크와는 다른 기능을 사용한다.

6장, ‘마이크로서비스 확장’에서는 4장, ‘마이크로서비스 및 클라우드-네이티브 애플리케이션으로의 진화’에 마이크로서비스의 고급 기능을 추가하는 데 중점을 둔다.

7장, ‘고급 스프링 부트 기능’에서는 스프링 부트의 고급 기능을 살펴본다. 스프링 부트 액추에이터를 사용해 마이크로서비스를 모니터링하는 방법을 배운다. 그런 다음, 마이크로서비스를 클라우드에 배포한다. 또한 스프링 부트가 제공하는 개발자 도구를 사용해 좀 더 효과적으로 개발하는 방법을 배운다.

8장, ‘스프링 데이터’에서는 스프링 데이터 모듈에 대해 설명한다. 스프링과 JPA 및 빅데이터 기술을 통합하는 간단한 애플리케이션을 개발한다.

9장, ‘스프링 클라우드’에서는 일반적인 문제, 설정 관리, 서비스 검색, 서킷 브레이커 및 지능형 라우팅이 있는 클라우드 분산 시스템에 대해 설명한다. 이 장에서는 스프링 클라우드로 공통 패턴을 위한 솔루션 개발 방법을 배운다. 이러한 솔루션은 개발자 로컬 시스템뿐 아니라 클라우드에서도 잘 작동한다.

10장, ‘스프링 클라우드 데이터 플로’에서는 마이크로서비스 기반의 분산 스트리밍 및 배치 데이터 파이프 라인에 대한 패턴과 모범 사례를 제공하는 스프링 클라우드 데이터 플로에 대해 알아본다. 스프링 클라우드 데이터 플로의 기본 사항을 이해하고, 이를 사용해 기본 데이터 플로 사용 사례를 작성한다.

11장, ‘리액티브 프로그래밍’에서는 비동기 데이터 스트림을 사용한 프로그래밍을 살펴본다. 리액티브 프로그래밍을 이해하고, 스프링 프레임워크에서 제공하는 기능을 간략히 살펴본다.

12장, ‘스프링 모범 사례’에서는 단위 테스팅, 통합 테스팅, 스프링 설정 유지 등과 관련된 스프링을 사용해 엔터프라이즈 애플리케이션을 개발할 때의 모범 사례를 이해한다.

13장, ‘스프링에서 코틀린 사용’에서는 코틀린 같이 인기를 얻고 있는 JVM 언어를 소개한다. 이클립스에서 코틀린 프로젝트를 설정하는 방법에 대해 설명한다. 코틀린을 사용해 새로운 스프링 부트 프로젝트를 만들고 단위 및 통합 테스팅과 함께 몇 가지 기본 서비스를 구현한다.
리뷰 총점 5.6
한줄평 총점 6.0

클린봇이 부적절한 글을 감지 중입니다.

설정

사락 별점0

혜택 및 유의사항

첫번째 별점을 남겨주세요.

첫번째 밑줄을 남겨주세요.