안녕하세요! 조엘입니다! 🤞🤞
우아한테크코스에서는 미션을 PR로 제출하고, 해당 미션에서 배운 것을 학습로그로 기록하고 있어요.
레벨 2에서는 스프링 프레임워크로 웹 애플리케이션을 개발해보고, 배포 인프라와 관련된 내용을 학습했어요.
짧지만 프론트엔드 크루들과 협업하는 미션도 진행했어요.
[미션 정리]
미션명 | PR 링크 |
스프링 입문 - 체스 <1, 2단계> | https://github.com/woowacourse/jwp-chess/pull/251 |
스프링 입문 - 체스 <3단계> | https://github.com/woowacourse/jwp-chess/pull/294 |
배포 인프라 | https://github.com/PapimonLikelion/woowacourse-TIL/blob/master/Level2/2021-04-29.md |
스프링 - 지하철 노선도 관리 <1, 2단계> | https://github.com/woowacourse/atdd-subway-map/pull/102 |
스프링 - 지하철 노선도 관리 <3단계> | https://github.com/woowacourse/atdd-subway-map/pull/145 |
스프링 - 경로 조회 / 로그인 <1, 2단계> | https://github.com/woowacourse/atdd-subway-path/pull/94 |
스프링 - 경로 조회 / 로그인 <3단계> | https://github.com/woowacourse/atdd-subway-path/pull/138 |
스프링 - 협업 미션 | https://github.com/woowacourse/atdd-subway-fare/pull/40 |
[학습 로그 정리]
웹 어플리케이션 구조
- Controller: 웹 MVC의 컨트롤러 역할
- Service: 핵심 비즈니스 로직 구현
- Repository: DB 접근, Domain 객체를 DB에 저장하고 관리
- Domain: 비즈니스 도메인 객체, 예) 회원/주문/쿠폰 등 주로 DB에 저장되고 관리 됨
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-04-17.md#%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%9B%B9-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EA%B5%AC%EC%A1%B0
태그
- Spring, Web Architecture
REST API
- HTTP 설계를 제대로 잘 활용하는 네트워크 아키텍쳐 (자원에 대한 주소를 지정하는 방법)
- REST 구성
- 자원(Resource): URI
- 행위(Verb): HTTP Method
- 표현(Representations)
- https://meetup.toast.com/posts/92
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-04-18.md#rest-api%EB%9E%80
태그
- Web, Network
IoC
- 기존의 프로그램은 모든 오브젝트가 능동적으로 자신이 사용할 클래스를 결정하고, 언제 어떻게 그 오브젝트를 만들지 스스로 관장
- 즉 개발자, 사용하는 쪽에서 제어해줄 것
- 제어의 역전: 제어 흐름의 개념을 거꾸로 뒤집자!
- 오브젝트가 자신이 사용할 오브젝트 선택/생성 X, 어디서 사용되는지도 모름
- 빈: 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트
- 스프링 컨테이너가 생성, 관계설정, 사용 등을 제어하는 제어의 역전이 적용됨
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-04-20.md#%ED%86%A0%EB%B9%84%EC%9D%98-%EC%8A%A4%ED%94%84%EB%A7%81-1%EC%9E%A5-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8%EC%99%80-%EC%9D%98%EC%A1%B4%EA%B4%80%EA%B3%84%EF%BB%BF
태그
- Spring
Mocking
- Service에 대한 테스트 진행 시, 레파지토리와 비즈니스 로직이 함께 있어 테스트에 불편함을 겪음
- 이를 해결하고자 Mocking을 도입함
- https://github.com/mockito/mockito/wiki/Mockito-features-in-Korean
- https://jojoldu.tistory.com/226
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-04-30.md#mocking
태그
- Spring Test
Session
- 사용자가 로그인을 한 후 SessionID를 발급하여 인가 권한을 부여해줌
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-04-27.md#spring-%EC%84%B8%EC%85%98%EC%BF%A0%ED%82%A4%EF%BB%BF
태그
- Session
소켓
- 네트워크 통신 중 소켓에 대해 공부해봄
- https://papimon.tistory.com/80
- www.youtube.com/watch?v=Fh1GAi63CfA
- www.joinc.co.kr/w/Site/Network_Programing/Documents/IntroTCPIP
태그
- Network, Socket
접근 통제
- Bastion 서버를 도입해 서비스 서버의 22번 포트에 접근을 제한시키는 경험을 해봄
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-04-28-%EB%B0%B0%ED%8F%AC1%EB%8B%A8%EA%B3%84.md#%EC%A0%91%EA%B7%BC-%ED%86%B5%EC%A0%9C
태그
- Network, Security
Annotation
- 어노테이션이 어떻게 동작하는지 알아보고, 우리가 붙여본 어노테이션이 어떻게 IoC 컨테이너가 관리하는 Bean으로 등록되는 지 생각해본다
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-05-08.md#%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98%EF%BB%BF
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-05-09.md#%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98-%EC%8A%A4%ED%84%B0%EB%94%94
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-05-17.md#2021-05-17
태그
- Annotation, Java
Package By Feature vs Package By Layer
- 유지보수에 용이한 패키지 구조에 대해 고민해본다.
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-05-10.md#%ED%8C%A8%ED%82%A4%EC%A7%80-%EA%B5%AC%EC%A1%B0-%EA%B3%A0%EB%AF%BC
- https://www.slipp.net/questions/36
- https://pasudo123.tistory.com/115
태그
- 패키지 구조 설계
Spring Test
- 상호 독립적인 테스트를 구현하는 방법을 공부함
- @DirtiesContext, @Sql("~~.sql"), @Transactional 어노테이션의 활용 공부
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-05-07.md#%EB%B8%8C%EB%9D%BC%EC%9A%B4-%EC%88%98%EC%97%85
태그
- Spring Test
Spring Validation
- Dto 객체 생성시 올바르지 않은 값을 걸러낼 수 있도록 Spring Validation 도입
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-05-11.md#notnull-notempty-notblank%EF%BB%BF
태그
- Spring Validation
JWT
- JWT 토큰을 사용하여 유효한 사용자에 대한 검증을 진행함
- 어떠한 필드를 토큰으로 가져야할지, 어느 레이어에서 유효성 검사를 진행해야 할지 고민함
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-05-19.md#cookie-vs-session-vs-token%EF%BB%BF
태그
- 토큰
Spring Web MVC flow
- Interceptor와 ArgumentResolver 각각이 가져야 할 적절한 책임에 대해서 생각해봄
- Interceptor: 토큰에 대한 인증이 필요한 곳에서 Validation을 진행
- ArgumentResolver: Controller의 매개변수로 토큰의 정보를 추출하여 필요한 정보를 담아 만든 객체를 전달해줌
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-05-12.md
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-05-18.md#%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9B%B9-%EC%9A%94%EC%B2%AD-%EC%B2%98%EB%A6%AC%EA%B3%BC%EC%A0%95-spring-web-mvc%EF%BB%BF
태그
- Spring Web MVC
CORS
- 하나의 출처에서만 요청에 대한 응답을 해줄 수 있던 기존의 웹 시스템에서 비롯됨
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-05-19.md#cors
태그
- Spring Web MVC
예외 처리 전략
- 예외를 어떤 방식으로 처리해야 할 지 고민함
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-05-26.md#spring-%EC%98%88%EC%99%B8-%EC%B2%98%EB%A6%AC-%EC%A0%84%EB%9E%B5%EF%BB%BF
태그
- 예외 처리
다양한 Jdbc 구현체의 활용
- JdbcTemplate, SimpleJdbcInsert, NamedParameterJdbcTemplate을 활용해봄
- 조금 더 확실한 형식 안에서 쿼리문을 작성함으로써 휴먼 에러를 줄일 수 있을 듯 함
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-05-30.md
태그
- JDBC
https
- SSL 인증서를 통해 안전하게 http 통신을 사용할 수 있도록 함
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-06-16.md
태그
- 웹 보안
웹 서버와 WAS
- nginx를 통해 웹 서버 설정을 해봄
- 웹 서버에게 https 보안의 책임을 부여하고, WAS에게 http 요청을 위임하도록 설정해봄
- https://papimon.tistory.com/84
- https://github.com/joelonsw/woowacourse-TIL/blob/master/Level2/2021-06-18.md#%EC%9B%B9-%EC%84%9C%EB%B2%84%EB%8A%94-%EC%99%9C-%ED%95%84%EC%9A%94%ED%95%9C%EA%B0%80
태그
- 웹 서버
+) 공부에 도움 주신 선배 개발자 분들 감사합니다!
반응형
'외부 활동 > 우아한테크코스' 카테고리의 다른 글
[10분 테코톡] 조엘의 GC (6) | 2021.10.13 |
---|---|
Level3 학습 로그 정리 (2) | 2021.08.26 |
Level1 미션 + 학습 로그 정리 (1) | 2021.04.26 |
저는 모든 게 처음이라니까요? (2) | 2021.02.22 |
우아한테크코스 3기 최종 합격 (5) | 2020.12.30 |
댓글