초보개발자의 typescript로 api서버 구축기

초보개발자·2022년 3월 8일
0

typescript

목록 보기
1/1

- 목차

문제의식
목표
참고자료
과정
결론

1. 문제의식

  • Typescript를 배웠으나 Javascript처럼 사용하고 있었음
  • 테스트 코드작성에 대한 필요성(리팩터링, 생산성 향상)
  • 객체지향 활용(Typescript)
  • 절차지향적 코드 작성으로 인한 유지보수 고통 경험

2. 목표

  • 객체지향 학습
  • DI 활용
  • DDD(Domain-Driven Design) 학습
  • unit test 학습
  • 최대한 라이브러리를 쓰지않은 프로젝트
  • frameWork 사용 지양
  • 온라인 강의 비즈니스 API 개발 (깃허브)


강의 API 요구사항


아키텍쳐

3. 참고자료

4. 과정

  • 공부! (2월 중순)
    • 무작정 강의만 들으면 공부가 안되기 때문에 대략 프로젝트를 같이 병행하며 진행
    • 강의를 보고 공부할때에는 알 것 같았지만, 키보드만 잡으면 멍해지는 상태
    • frameWork를 사용한 개발과 express만 사용해 아키텍쳐를 구현 사이에 괴리가 큰 것을 알게됨(아키텍쳐에 대한 지식이 부족하다는 것을 깨달음)
    • API설계를 위한 자료조사와 계획작성(path는 2뎁스를 넘지 않는 설계, 명사 사용)
  • 구조를 갖춰나감 (2월 말)
    • TypeORM 사용(Data Mapper 패턴 지원)
    • 계층간 데이터 이동은 entity를 이용(계층간 느슨한 관계를 지향, 다른계층이 바뀌더라도 영향을 미치지 않게 하기 위해 격리)
    • Data Mapper 패턴을 통해 개발 (향후 orm 교체를 고려, service계층과 orm의 분리)
    • 레이어간의 격리성을 위하여 Entity와 Data Access를 분리 (repository에서만 db접근, db교체 상황 고려)
    • Jest학습과 UnitTest 작성
  • 개발완료 (3월 초)
    • 수정과 Test 반복

5. 결론 (느낀점)

  • 객체지향, 아키텍쳐, Unit테스트 모든것이 시너지 효과를 낸다는점.
    예) 좋은 Unit테스트를 위해 레이어간에 느슨한 결합이 중요
  • 레이어 간의 느슨한 결합과 응집성으로 인해 라이브러리나 ORM등이 바뀐다면 해당 레이어만 변경하면 된다는 점. ( 이전의 개발에서는 Orm을 변경하게 된다면 controller까지 수정해야 했었음. )
    예) TypeOrm을 sequelize로 변경하더라도 repository만 변경하면 됨
  • 코드의 복잡성 감소
  • 문서화 역활을 하는 테스트 코드
profile
주니어 개발자입니다!

0개의 댓글