본문 바로가기

분류 전체보기

(49)
[Design Pattern] Proxy Pattern, Decorator Pattern * 해당 블로그의 모든 내용과 사진은 글 제일 아래 참고자료를 작성하였습니다. 아래 글에 이어서 강의에서 배운 내용을 토대로 Proxy Pattern을 정리해보겠습니다. [Design Pattern] 프록시 패턴과 이터레이터 패턴 이전 글에 이어 더 다양한 디자인 패턴을 소개해 볼게요. 이전 글을 안보신 분들은 보고 오시면 더 도움이 많이 될거에요! [Design Pattern] 디자인 패턴? 야 너두 이해할 수 있어(2) 이전 글에 이어 더 mirr-coding.tistory.com #5 Proxy 패턴 (Proxy Pattern) 프록시를 다시 한번 정리하면 클라이언트가 서버를 직접 호출하는 게 아니라 아래 처럼 "대리자" 가 대신 호출 하는 것입니다. 여기서 "대리자" 는 또 다른 "대리자" 를 호..
[Design Pattern] Template Method Pattern * 해당 블로그의 모든 내용과 사진은 아래 참고자료를 작성하였습니다. #11 TMP 패턴 (TMP Pattern) 단순하게 비즈니스 로직의 시간을 측정하는 상황이 있다고 가정하겠습니다. 위의 코드를 보시면 알다싶이 비즈니스 로직의 시간을 측정하는데 필요한 코드는 어느 메서드나 중복이 되는것을 알 수 있습니다. 하지만 저 중복되는 코드를 메서드화 시키기엔 어려워보입니다. 또한 시간측정의 예시가 아닌 다른 예시로써 try-catch 가 들어가게 된다면 더욱 메서드화 시키기 어려워 보입니다. 또한 매 매서드 마다 저런식의 코드를 추가 시킨다면 가독성이 정말 떨어질 것으로 예상됩니다. 유지보수하기 쉬운 코드를 설계 하기위해선 변할 수 있는 부분과 변하지 않는 부분을 잘 나눠놔야합니다. 해당 예시에선 비즈니스 로..
[Conference] JVM warm up 컨퍼런스 영상 : [Backend] JVM warm up / if(kakao)dev2022 * 해당 블로그의 모든 내용과 사진은 위 영상을 참고하여 작성하였습니다. 이슈 배포할 때 발생한 응답 Latency 문제를 어떻게 해결했는지, 그 과정에서 알게된 JVM jit compiler와 warm up에 대해 소개합니다. 담당 서버 소개 담당하고 계신 서버는 카카오 T의 계정 서비스입니다. 해당 서비스는 카카오 T 앱 사용자의 가입, 휴면, 정지 및 탈퇴 절차에 관여하며 개인정보를 저장합니다. 이를 암호화 및 분리보관하여 보안적으로 문제없이 사용자가 서비스를 사용할 수 있게 합니다. 외부 게이트 웨이 뿐만아니라 내부 서비스에서도 요청이 많아 응용되는 Micro Server 중 TPS 가 높은 서버 중 하나이..
[Conference] 어떻게 안정적인 서비스를 빠르게, 자주 출시할 것인가? 컨퍼런스 영상 : 토스ㅣSLASH 22 - 어떻게 안정적인 서비스를 빠르게, 자주 출시할 것인가? * 해당 블로그의 모든 내용과 사진은 위 영상을 참고하여 작성하였습니다. 좋은 코드 좋은 코드의 가치는 개발자가 작성한 코드가 서비스에 배포되어 사용자에 의해 이용될 때 가치가 발현됩니다. 사용하지 않는 코드는 아무리 잘 작성한 코드라 하더라도 기술적인 관점에서 보면 바이트 덩어리일 뿐입니다. 따라서 코드 작성단계에서부터 서비스 배포 및 운영까지의 제품전달 파이프라인 전체가 잘 구성되는 것이 중요합니다. 다음은 제품이 전달되는 과정입니다. 이제 토스페이먼츠가 안정적인 서비스를 빠르게 자주 출시하기 위해 어떤 노력을 하는지 알아보겠습니다. 프로젝트 셋업 및 개발 토스페이먼츠는 Spring 과 Kotlin을 이..
[Conference] 지속 성장 가능한 코드를 만들어가는 방법 컨퍼런스 영상 : 토스ㅣSLASH 22 - 지속 성장 가능한 코드를 만들어가는 방법 * 해당 블로그의 모든 내용과 사진은 위 영상을 참고하여 작성하였습니다. 해당 영상에서 소개하시는 토스 페이먼츠 개발자분들은 코드의 품질에 대해 지속적으로 관심을 갖고, 확장 가능한 방식으로 코드를 관리하고있습니다. 또한 처음부터 최고의 설계나 품질을 유지하려는 것보다 최소규칙을 지켜 동작하는 소프트웨어를 빠르게 만들고, 코드에 관심을 두고 성장시켜나갑니다. 지속성장 가능한 코드를 만드는 방법 Import 문을 자주 보시나요? 요즘의 IDE에서는 켜지자마자 import 문을 접어놓는 경우가 많습니다. 한번 import 문을 열어볼게요. 해당 영상의 예시코드입니다. 코드를 보았을때 이질감이나 이상한 부분이 보이시나요? Pa..
[Conference] 레거시 개편 컨퍼런스 영상 : (레거시 시스템) 개편의 기술 - 배달 플랫폼에서 겪은 N번의 개편 경험기 | 인프콘 2022 * 해당 블로그의 모든 내용과 사진은 위 영상을 참고하여 작성하였습니다. 레거시 시스템이란? 요약해서 말하면 낡은 시스템입니다. 예를들어 한때는 굉장히 각광 받았지만 시간이 지나면서 비주류인 기술을 의미합니다. 성능적으로 부족하거나, 요구 사항을 수행할 능력이 부족한 시스템을 의미합니다. 대표적인 예시로는 과거 휴대폰이 발달하기 전 인터넷의 트래픽양은 크지 않았습니다. 그렇게 Apache 의 요청마다 프로세스를 생성하는 동작방식으로도 잘 대응을 했지만, 휴대폰이 발달하고 인터넷의 트래픽의 엄청난 증가를 하면서 10K문제가 발생합니다. 이를 기점으로 Nginx의 스레드를 생성하여 메시지 큐에 요..
[Spring] JPA? Hibernate? Persistence? JPA다들 프로젝트를 할 때 RDB와 접근하기 위해서 JPA를 접해보셨을겁니다.JPA란 Java Persistence API의 약자로 ORM을 편리하게 사용할 수 있는 인터페이스입니다. 여기서 ORM이란 Object Relational Mapping으로 객체와 RDB를 자동으로 매핑해주는 것을 말합니다.ORM은 보다 더 객체지향적인 코드를 사용할 수 있어 비즈니스 로직에 집중할 수 있고, 유지보수나 편리성을 증가시켜줍니다.Hibernate앞서 소개한 JPA의 구현체입니다. JPA 의 구현체는 더 있지만 가장 안정적인 구현체라고하네요.JPA를 공부하다보면 JDBC라는 키워드를 많이 접해보셨을텐데요.JDBC란 자바 DB 프로그래밍을 하기 위해 사용되는 API입니다.JDBC는 직접 DB와의 Conn을 열고 닫..
[Spring] Session (feat. 프로젝트 경험) Session Http 프로토콜은 기본적으로 요청에 대한 상태를 저장하지 않는 Stateless한 성질을 가지고 있습니다. 이를 해결해주기 위해 Session을 활용하는데요. 세션의 기본적인 특징을 알아보겠습니다. 우선 Session은 앞서 말씀드린대로 Stateful하게 하기위한 개념입니다. 사용자 A가 사이트에 로그인을 하게되면 서버에서는 사용자 A에게 고유한 값을 쿠키로 전달해줍니다. 실제로 제가 하는 프로젝트의 한 상황을 캡쳐한것인데요. 이런식으로 F12를 누르고 해당 옵션을 선택하면 어떤 쿠키가 왔는지 볼수있습니다. 그리고 추후에 클라이언트는 이 쿠키를 서버에 요청을 할때 같이 보내기만 하면 인증이되는 구조입니다. 세션의 특징으로는 쿠키와 비교를 할 수 있는데요. 1. 쿠키는 클라이언트에 정보가..