분류 전체보기(131)
-
우아한 테크 캠프 PRO 2기 - 4주차 그럴듯한 서비스 만들기 후기
4주차는 개발환경과 운영환경을 구축해보는 인프라 시간이었다. 인프라 구축을 제대로 해본 경험이 없었기 때문에 처음엔 당황했지만 하나하나 개념을 알아가면서 진행하니 어려운것은 없었다. 인프라 구축시 진행했던 내용은 아래와 같다. 1. AWS 네트워크 망 분리 VPC 생성 인터넷 게이트웨이 생성 서브넷 생성 (public 웹서버 2개, public Bastion서버 1개, private DB서버 1개) 라우팅 테이블 설정 넷 게이트웨이 생성 시큐리티 그룹 설정 2. 서버 설정 bastion 서버에서 각 서버 접속가능하게 각 서버에 공개키 설정 bastion 서버에 각 서버의 별칭 세팅(hosts파일) 히스토리에 시간값 세팅 세션 타임아웃 세팅 프롬프트에 각 서버별칭 나오게 설정 감사로그 남기도록 설정 DNS..
2021.06.18 -
우아한 테크 캠프 PRO 2기 - 3주차 인수 테스트 주도 개발 후기
ATDD 3주차가 끝나버렸다. 3주차는 지하철 관리 프로그램을 ATDD 기반으로 개발하는 것이 목표였다! ATDD자체는 어려운 개념이 아니였다. 그냥 TDD앞에 인수 테스트라는 전구간 테스트를 먼저 작성해두고 그 아래에서 TDD를 진행하면 된다. 인수 테스트를 한 번 작성해두면, 단위 테스트 처럼 자주 바뀔 일이 없고, 지금 개발하려고하는 내용의 방향과 목표를 확실하게 잡아주는 역할을 하기 때문에 TDD할 때 가장 많이 고민하게 되는 "뭘 테스트해야하지?"라는 고민을 많이 해결할 수 있어서 개발자가 인수 테스트를 작성하는 수고스러움에 비해 더 많은 장점이 있는 설계 방법이라고 생각되었다. 앞으로는 나도 ATDD 기반으로 개발을 할 수 있도록 해야겠다. JPA 3주차는 지하철 관리 프로그램을 개발하였는데,..
2021.06.16 -
우아한 테크 캠프 PRO 2기 - 2주차 JPA 후기
2주차 JPA 후기 2주차 git 저장소: https://github.com/ybh89/jwp-qna.git 2주차 미션을 완료했다. 2주차 미션을 간단 요약을 하면 아래와 같다. 엔티티 매핑 연관관계 매핑 레거시 코드 TDD로 리팩토링하기 나는 JPA에 대해서는 이미 학습되어 있고 경험도 있었기 때문에 쉽게 넘어갈 수 있었다. 나에게 핵심은 레거시 코드를 TDD로 리팩토링하는 것이었다. QnA 서비스가 이미 레거시 코드로 작성되어 있었고 질문과 답변을 삭제하는 기능을 TDD로 리팩토링하는 것이다. 기능 요구 사항은 아래와 같다. 질문 데이터를 완전히 삭제하는 것이 아니라 데이터의 상태를 삭제 상태(deleted - boolean type)로 변경한다. 로그인 사용자와 질문한 사람이 같은 경우 삭제할 수..
2021.06.01 -
우아한 테크 캠프 PRO 2기 - 1주차 로또 TDD 후기
1주차 로또 TDD 후기 1주차가 완료되었다. 다행히 일정대로 미션수행을 완료하였고 생각보다 정말 쉽지 않다는 걸 깨닫았다. 1주차에는 그냥 간단한 로또 프로그램을 개발하는 것이다. 요구사항에 대해 간략히 요약해보자면, 자동 로또 번호가 생성기능, 수동 생성 기능, 보너스 볼 기능 사용자는 콘솔을 이용하여 로또 구매 가격, 로또 수동 구매 개수, 수동 구매 로또 번호, 보너스 볼 등 입력받는다 입력받은 정보를 이용하여 사용자의 로또 담청 보상금을 계산하여 결과를 콘솔로 보여준다. 어떻게 보면 정말 간단한 프로그램이다. 기능 구현은 누구든지 할 수 있다. 하지만 이 교육은 기능 구현이 목적이 아니다. 이 미션을 수행할 동안, 기능 요구사항이 아닌, 프로그래밍 요구사항이 주어진다. 예를들어 클린코드를 위한 ..
2021.05.27 -
Spring Security - AccessDecisionManager, AccessDecisionVoter
AccessDecisionManager 자원을 요청한 사용자가 해당 자원에 접근을 허용할지 결정하는 주체. 여러 Voter를 가지고 있고, Voter에 요청한 사용자가 자원에 접근해도 괜찮은지 투표를 진행하여, 투표 결과에 따라 접근 허용을 결정한다. 접근 결정에 세 가지 유형이 있다. AffirmativeBased: 여러 개의 Voter 중에 하나의 Voter가 접근 허용을 리턴하면 접근 허용으로 결정. ConsensusBased: 다수표에 의해 결정. 만약 허용과 거부의 수가 같으면 기본값은 접근 허용이나, allowIfEqualGrantedDeniedDecisions을 false로 설정할 경우 접근 거부가 된다. UnanimousBased: 모든 Voter가 접근 허용을 리턴해야지만 접근 허용으로 ..
2021.04.17 -
Spring Security - 인가 플로우, FilterSecurityInterceptor
인가 플로우 FilterSecurityInterceptor 인가를 검증하는 필터. 인증 객체가 없으면 인증 예외(AuthenticationException)를 발생시킨다. SecurityMetadataSource는 자원에 대한 권한을 매핑한 정보를 가지고 있는 클래스로, 여기서 권한 정보가 있는지 판단한다. 권한정보가 없다면 모두 허용하면 됨으로 자원 접근에 허용한다. 권한정보가 있다면 해당 권한이 사용자에게 있는지 AccessDecisionManager가 결정한다. 사용자에게 권한이 없다면 AccessDeniedException을 발생시킨다. 사용자에게 권한이 있다면 자원 접근을 허용한다.
2021.04.17