전체보기(316)
-
오브젝트 01 ~ 04
00 - 공통 연극 - 배우 - 배역 협력 - 역할 - 객체 설계란 코드를 배치하는 것이다. 01 - 객체 책임의 이동이 중요하다. 책임을 올바른 위치에 놓는 것만으로도 개선이 가능하다. 자신의 데이터를 스스로 처리하는 자율적인 객체를 만들어야 결합도를 낮추고 응집도를 높일 수 있다. [26p] 외부 간섭을 배제하고 메세지를 통해서만 협력하는 자율 객체를 만들어야한다. [26p] 절차 지향 => 객체가 소극적인 존재 객체 지향 => 객체가 적극적인 존재 객체를 적극적인 존재로 만드는 법 외부간섭을 줄인다. 메세지를 통해서만 협력한다. 사설) 스프링을 사용하다보니 비즈니스 로직이라는 이유로 모든 책임이 서비스 컴포넌트로 집중이되는데, 객체 지향이라는 관점에서는 좋은 설계는 아닌 듯 싶다. 02 - 객체 지..
2020.03.15 -
사설 SSL 인증서 만들기
쿠버네티스 강의를 듣던도중 괜찮은 내용을 발견해서 기록합니다. [more] openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=www.https.com/O=www.https.com" 사설 인증서이기 때문에 아래와 같은 페이지가 나오게된다.
2020.03.11 -
[재독서] 클린 아키텍쳐
소프트웨어 아키텍쳐의 목표 필요한 시스템을 만들고 유지보수하는데 투입 되는 인력을 최소화한다. 개발자 입장에서 전력을 기울이지 않는 개발자는 없다. 소프트웨어의 어원처럼 소프트웨어는 반드시 부드러워야한다. 구조적 프로그래밍 Goto 문이 없어진 이유: Goto 문은 재귀 호출, 구조적 분해라는 과정을 방해하는 요소 모든 프로그램은 순차 분기 반복이라는 구조로 만들 수 있다. =>프로그램에서도 유클리드 계층 구조 를 만들 수 있다. 객체 지향 프로그래밍 객체 지향의 3가지 키워드 : 캡슐화, 상속, 다형성 자바와 C# 은 헤더와 구현체 분리하는 방식을 버렸고 코드상에 어떤 멤버변수가 있는지 알게됨으로서 캡슐화이 가치가 일정 훼손되었다. 자바와 C# 에서의 상속은 C++에서도 눈속임으로 가능한 방법이었다. ..
2020.02.28 -
Vault
Vault HashCorp 에서 만든 오픈소스 프로젝트다. 깃허브 상에 존재하는 ID / Password 를 저장하는 방식은 보안적으로 취약하다. 따라서 이 정보를 vault 서버에 저장해놓는다. 어플리케이션 시작시 vault 서버에서 가져와 ID / Password를 사용한다. 높은 확장성, 더불어 Spring Vault 라고 오픈소스 프로젝트로 Vault 를 간단히 사용할 수 있는 모듈이 존재한다. Secret 가장 간단하게 사용자가 요청한 값을 key-value 로 저장할 수 있는 데이터 secret/mydbs/mysql username hello password world ... vault: uri: vault 도메인 token: vault 토큰 path: mysql: secret/mydbs/my..
2020.02.24 -
카카오 페이 결제 흐름
참고 링크 전제 1) localhost:3000 은 web 서버다. 전제 2) localhost:8080 은 api 서버다. 전제 3) web 서버와 api 서버는 rest api 로 통신하고 있다. 정보 1) KakaoAK xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 에서 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx는 admin 키다. 1. web 에서 api 서버에 결제 준비 api 호출 https://localhost:8080/payment/ready 2. api 서버가 kakao pay 의 ready api 를 호출한다. curl -v -X POST 'https://kapi.kakao.com/v1/payment/ready' \ -H 'Authorization: Ka..
2020.02.22 -
Spring security architecture summary
AuthenticationFilter 의 결과로 Security context 가 채워진다. 사용자의 Request 가 들어오면 해당 요청을 처리하기 위해 어떤 필터를 사용할지 불러온다. WebSecurityConfigurerAdapter 를 작성하는 과정은 어떤 필터들을 사용해야 하는지 지정하는 과정과 같다. @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .mvcMatchers("/account/*..
2020.02.19