본문 바로가기

[1권] 토비의 스프링 5일차 데이터레터 패턴 인터페이스를 기반으로 여러개의 데코레이터 객체를 붙일수 있다. 어떤 데코레이터를 쓸지는 런타임시에 외부에서 주입 다이나믹 프록시 프록시 팩토리에 의해 런타임 시 다이나믹하게 만들어지는 오브젝트이다. Invocation Handler를 구현하여 프록시시 작동할 제공 코드는 직접 작성해야 한다. 다이나믹 프록시는 클라이언트의 모든 요청을 리플렉션 정보로 변홚서 InvocationHandler 구현 오브젝트의 invoke() 메소드로 넘기는 것이다. 작동방식 기존의 Bean Factory를 활용하여, Bean 컨텐이너를 만든다. 만든 컨테이너를 통해, ProxyFactory를 활용하여, 부가기능이 추가된 Proxy Bean을 만든다. ProxyFactoryBean : Advise 한줄평 오늘은..
[1권] 토비의 스프링 4일차 서비스 추강화 ( 인터페이스 화) 클라이언트에 구현클래스를 노출하지 않고 런타임 시에 DI를 사용하는 이유는 일반적으로 구현 클래스를 바꿔가면서 사용하기 위함이다. 테스트시에는 테스트 구현클래스를, 일반적인 경우 일반적인 구현 클래스를.. 데이터레터 패턴 프록시 패턴 : 참조 방식 변경 -> 해당 객체에 대한 레퍼런스만 넘겨주 후 사용할때 생성하는것. 다이나믹 프록시(인터페이스 기반) -> InvocationHandler
무중단 배포가 가능한 이유가 무엇일까? Rolling 배포 방식 롤링 배포란 로드 밸런서가 곧 배포를 할 서버에 대한 Router를 다른 서버에게 위임하여 배포를 기다리고, 이후 배포한후 다음 서버순으로 차례차례 진행하는 방식이다. 장점 추가적인 리소스에 대한 할당없이, 무중단 배포가 가능하다. ( 많은 서버 자원이 필요하지 않다. ) 점진적으로, 새로운 버전이 유저에게 배포되므로 위험성이 다소 줄어든다. 단점 다른 서버에 트래픽이 몰려서 부하가 커진다. 3개 이상의 서버일 경우, 신버전과 구버전이 동시에 사용자에게 오픈될수 있어서 혼란을 야기할수 있다. 카나리 배포 방식 신버전이 배포한후, 구버전에 몰리던 트래픽을 점진적으로 신버전으로 옮기는 방식이다. 장점 점진적으로 서버가 오픈되므로, 위험성을 감지할 정부 파급력이 크지 않다. ( 오류를..
간편 로그인 연동 개발 리뷰 간편 로그인(카카오, 네이버) 연동을 진행하면서 개발하면서 중점을 맞췄던 내용에 대한 리뷰를 해보고자 한다. 여기서는 카카오를 기준으로, 카카오를 예로 들어 설명을 진행하려고 한다. 배경 지식 https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 중점 사항 개발을 진행하면서 생각했던 중점사항은 크게 4가지였다. OCP - open closed principal ( 추상 메소드 팩토리 패턴, 전략 패턴 ) 유지보수, 낮은 결합도 ( Inte..
결제 시스템 개선기 취치 기존 결제 시스템을 이용해 개발하면서, 결제 화면과 BackEnd API를 구성하면서 항상 이것이 맞는것인가라고 의문을 가지면서 개발을 진행하였다. 기존에 구축되었던 시스템일지라도 Why라는 의문과 취약점을 개선해야 한다고 생각하였고 그러한 의문으로부터 발견한 의문점 개선기를 기록하기 위해 작성해야겠다는 생각을 했다. 기록을 하여야 실수를 방지할수 있다라고 생각하기 때문이다. 기존 결제 시스템의 프로세스 4가지의 의문점 세션에 결제 가격을 저장하고, 이후 검증 도구로 사용하는 것이 옳은 방식인가? 브라우저단에서 바로 PG사에 Form Action을 통해 전송하는것이 맞는가? PG사에서 전송해준 데이터에 대한 로그를 전달받은 특정 URI에서 하지 않고 비즈니스단에서 처리하는것이 옳은 방식인가? 가상계..
Map Class Diagram Method 1) get 2) put 3) remove https://github.com/diqksrk/datastructure GitHub - diqksrk/datastructure Contribute to diqksrk/datastructure development by creating an account on GitHub. github.com
[1권] 토비의 스프링 3일차 트랜잭션 경계설정 Dao -> DatasourceTransactionManager -> getConnection() -> Connection 결과에 따라서 Commit() or RollBack() 1) DataSourceTransactionManager library = 'org.springframework', name: 'spring-jdbc' 2) Class Diagram 3) DataSource, Connection DataSource getConnection을 통해 Connection을 획득한다. 3) 여러개의 DB에 넣는 작업 -> 로컬 Transcation으로는 불가. 글로벌 Transcation 방법 사용 Hibernate를 이용하는 작업 -> 기존의 Connection방법과는 다르다. Se..
[1권] 토비의 스프링 2일차 + [2권] 앞부분 트랜잭션 서비스 추상화 원자성 - 모두 이루어지거나 모두 이루어지지 않거나. 책을 회사에 두고 왔다.... 목수가 장비탓을 하면 쓰나. 집에 있는 2권 처음부분을 읽고 정리한다. IOC, DI ApplicationConext -> Bean Factory 상속 -> Bean 설정위한 Meta 정보 Bean Definition 활용 실제로 해보려면, RootBeanDefinition를 생성하고 name, value값을 준 후, staticApplicationContext.registerBeanDefinition() 메소드를 통해 빈으로 등록이 가능하다. Pojo class + Bean Definition Meta 정보 = Spring Run time Object GenericApplicationContext..