공부 배경 Spring Web MVC를 사용하게 되면 수 많은 어노테이션들을 이용해 자동으로 기능을 구성시키는 경우가 많은데,,, 생각보다 동작 원리나 개념을 모르고 쓰는 경우가 있다. 점진적으로 하나씩 살펴보려고 합니다. @RequestBody and @ResponseBody HTTP 요청 및 응답...
CORS를 알아보자
SOP란? Same-Origin Policy, 동일 출처 정책 두 Origin 간에 프로토콜, 포트, 호스트가 같아야 동일 Origin이라고 할 수 있다. http://www.heowc.com/user에서 http://www.heowc.com 호출시 성공 https://www.heowc.com/user에서 htt...
Jacoco를 이용한 코드 커버리지 관리
코드 커버리지 관리의 필요성 테스트 코드를 열심히 작성하고 있었는데 하필 딱! 실수로 테스트 코드가 작성되지 않은 로직에 대한 변경이 발생했고, 이 변경으로 인해 부작용이 발생한다면? 코드 커버리지를 관리하게되면 이러한 불안감을 해소해준다. 코드 커버리지란? 테스트 케이스가 얼마나 충족 되었는지를 나타내는 지표 즉 테스트를 진행하...
Git, Remote repo add
사용 배경 Git clone해온 원격 저장소말고 다른 저장소와 연결하고 싶을때 사용 사용 방법 git remote add {저장소_별칭} base_저장소_url // 연결하고자하는 git 저장소로 이동 git remote add upstream https://github.com/{...}/{...} ...
우아한 테크 코스 프로, 7주차 레거시 코드 리팩토링
우아한 테크 코스 Pro, 7주차 과제 - 레거시 코드 리팩토링 Step1 - 테스트를 통한 코드 보호 Step2 - 서비스 리팩토링 Step3 - 의존성 리팩토링 Step4 - 멀티 모듈 적용 레거시 코드… 이해할 수 없고 수정하기도 힘든 코드를 지칭 레거시 코드는 모든 개발자가 극복해야 할 난제 왜 시스템은 부패...
우아한 테크 코스 프로, 5주차 인수 테스트 기반 TDD
우아한 테크 코스 Pro, 5주차 과제 - 인수 테스트 기반 TDD Step1 - 인수 테스트 기반 리팩토링 Step2 - 경로 조회 기능 Step3 - 인증을 통한 기능 구현 Step4 - 요금 조회 TDD 테스트 방법 #1, OUTSIDE IN 시스템 외부(에서 오는 요청)에 대한 첫 번째 테스트를 작성하여 개발을 시작...
Google Convention을 적용해보자
도입 배경 동일한 코드 스타일을 지원 Github에서 코드가 이쁘게(?) 나온다 (PR시 편리함) google code style guide ( intellJ 기준 ) https://google.github.io/styleguide/javaguide.html xml 다운로드(아래 링크에서 다운) https://github.com...
우아한 테크 코스 프로, 6주차 서비스 진단하기
우아한 테크 코스 Pro, 6주차 과제 - 서비스 진단하기 Step1 - 로깅과 모니터링 Step2 - 성능 테스트 서비스 문제 상황 인지 서비스 구성 CPU RAM Network Interface Card (NIC) Disk 각 자원들은 여유가 있거나 일정 수...
Transactional
[Spring] @Transactional 트랜잭션이란? 2개 이상의 쿼리를 하나의 커넥션으로 묶어 DB에 전송하고, 이 과정에서 에러가 발생할 경우 자동으로 모든 과정을 원래대로 되돌려 놓는다. 하나 이상의 쿼리를 처리할 때 동일한 Connection 객체를 공유하도록 한다. 트랜잭션의 성질 원자성 한 트...
Rebase vs Merge
Rebase vs Merge 둘 다 분기된 브랜치를 하나로 합칠 때 사용하는 방법 공통 상황 master에서 분기된 develop 존재 각 기능 개발을 위해 develop에서 feature/test 브랜치를 생성 feature/test 브랜치에 commit 1,2,3이 커밋된 상황 그 사이에 develop 브랜치에 develo...