향해99

1주차 과제 강의

dev_0hoon 2024. 6. 15. 16:51

1. TDD&클린아키텍쳐

- 5주 동안 진행

 

2. 대용량 트래픽  & 데이터 처리

 

3. 장애 대응

 

 

프로젝트를 보내줄 거고,

그걸 진행하면 됌

 

 

서버는 직접 구축해서 진행하게 될 것 이다.

------

TDD는 왜 중요한가

- 이 전에는 완벽한 설계를 통해서 피처개발에 집중했다면, 장애가 날 수 있음을 인정하고

장애를 허용하는 방법론이 제시가 된다. 유지보수시 대응이 가능할 방법

 

 

- 프로그램이 복잡해짐으로 디도스공격, 유저가 어떻게 사용할지가 예측이 안되기 때문

 

- 기존 찍어내기 식의 개발로는 소프트웨어의 품질을 올릴 수 없다.

- 장애의 시그널을 찍을 수 없었기 때문에, 테스트가 필요해 진다.

 

- 테스트코드와 테스트드리븐는 다른 것

 

- 현업에서 TDD란? 

 

-백엔드 개발자로서 요구사항을 분석하고 올바르게 완성하기 위한 TC를 작성하는 방법을 익힌다.

 

- TC가 뭐지 테스트 케이스?

 

 

End-to-end testing

- API 부터 DB까지 테스트

 

Intergration testing

- 서로 다른 모듈의 상호작용을 테스트 함, 

 

 

Unit testing - 하나의 클래스를 테스트

- 단일 기능, 행위에 대한 테스트

- 가벼운 비용, 함수/객체 등

 

Test Double (대역 개념)

- 실제 컴포넌트에 대해 행동을 모방하고, 이를 통해 기존의 강한 결합도를 낮추고 테스트 중 제어 가능하도록함

ㄴMock

>테스트를 위해 특정 기능에 대해 정해진 응답을 제공하는 객체

ㄴStub

> 테스트에 필요한 호출에 대해 미리 준비된 응답을 제공하는 객체

> 입력에 대해 어떤 상태를 반영하는 지에 초점을 맞춘 객체

 

 

 

- Testable Code

> 모든 코드를 테스트 가능하게 구현하는 것을 목표로 진행합니다.

> private..

 

 

given

 

when

 

then 형태로 쓰는 것이 좋다.

 


클린 아키텍처

coupling이라는게 있다.

 

tight와 Loose Coupling가 있다.

 

우리는

controller - DTO

Service - Domin

repository - Entity

레이어 별로 진행해야 한다.

 

레이어아키텍처의 핵심은 단방향 참조이다.

 

 

4L
//controller layer
UserController.java(kt, ts)

//application layer
UserService.java(kt, ts)
//domain layer
User(userEntity).java(kt, ts)

// infra layer
UserRepository.java(interface)
UserRepositoryImple.java

//왜 서비스는 임플이 아닐까

 

과제 제출은 pr 형태로 한다. (코치 분들이 코드리뷰 예정)

pr을 만드실 때 어떤 부분들이 고민되고 봐줬으면 좋겠는지 작성하기

PR내용에 비지니스 로직 이외의 프로젝트 init이라든가..포함x (핵심 로직만 PR로 만들어 주세요.)

 

E2E <- 필수까진 아니지만, 컨트롤러 테스트를 작성하라는 의미

컨ㅌ롤러 테스트 하기

 

동시성 처리**** 필수