전체 글 33

[Spring Security] csrf().disable()하는 이유는?! 그리고 CORS

0. Intro매번 CSRF, CORS를 공부하고 뒤돌아서 잊어버렸는데 면접에서 대답 못하는 사태가 벌어졌다..이전에 spring security에서 csrf().disable()에 대해서 제대로 이해하지 않고 사용한 것도 생각나서 이번 기회에 확실하게 정리하고 기억하고자 한다. 1. SOP와 CORS브라우저는 기본적으로 같은 출처에서만(origin) 리소스를 공유할 수 있다라는 SOP(Same-origin policy) 정책을 따르고 있다. 하지만 다른 출처와의 상호작용이 필요한 경우를 위해 특정 조항에 해당하는 리소스 요청은 출처가 다르더라도 허용하기로 했다. 그 중 하나가 CORS(Cross-Origin Resource Sharing) 정책을 지킨 리소스 요청이다. 다시 말해, SOP의 불편함을 해..

java & spring 2024.11.03

[Design Pattern] 스프링은 어떤 디자인 패턴을 사용하고 있을까?

0. Intro을 읽으며, 싱글톤 패턴은 스프링 빈, 팩토리 패턴은 스프링 컨테이너가 DI하는 것을 떠올렸다.내가 이해한 바가 맞는지, 그리고 Spring에서 사용중인 다른 디자인 패턴은 어떤 것들이 있는지 알아보고자 이 글을 작성하게 되었다.결론부터 얘기하면, 스프링에서는 싱글톤 패턴, 팩토리 메서드 패턴, 프록시 패턴, 템플릿 메서드 패턴을 사용하고 있다.하나씩 살펴보자.1. 디자인 패턴(Design Pattern)이란?우선 디자인 패턴이 무엇이고, 어떤 것들이 있는지 알아보자.디자인 패턴이란, 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것을 의미한다.여러 종류의 디자인 패턴이 있으며, 각각의 상황과 문제에 맞는 ..

java & spring 2024.11.02

[Architecture] '레이어드 아키텍처에서 인터페이스 잘 사용하면 그게 헥사고날 아키텍처 아닌가?'에 대한 의문을 해결해보자

0. Intro"레이어드 아키텍처에서 인터페이스 잘 사용하면 그게 헥사고날 아키텍처 아닌가?"하는 의문을 해결하기 위해 이 글을 작성하게 되었다. 결론부터 얘기하자면 맞지만 다르다. 레이어드 아키텍처에서 OCP 원칙이 지켜지지 않는다는 단점을 헥사고날 아키텍처가 보완한다는 얘기가 있는데, 사실 계층별로 인터페이스를 잘 설계하고 추상화 한다면 DIP, OCP 원칙 모두 지킬 수 있다고 생각한다. 하지만, 아키텍처의 핵심 철학이 다르고, 이것 때문에 레이어드 아키텍처는 여러 문제점을 야기한다. 좀더 자세히 알아보자. 1. 레이어드 아키텍처, 그리고 문제점레이어드 아키텍처에서는 상위 계층에서 하위 계층 방향으로 단방향 제어 흐름을 가진다. Presentation 계층은 Domain 계층에 의존하고, Domai..

etc/study 2024.10.11

[Spring] 싱글톤 레지스트리와 스프링의 IoC 컨테이너

0. Intro[토비의 스프링] 1장 오브젝트와 의존관계 '1.6 싱글톤 레지스트리와 오브젝트 스코프'를 읽고 정리한 내용입니다.GitHub PR 링크 : https://github.com/Kimhan-nah/toby-spring/pull/8 [1장 오브젝트와 의존관계] 1.6 싱글톤 레지스트리와 오브젝트 스코프 by Kimhan-nah · Pull Request #8 ·Issue 1장 오브젝트와 의존관계 #2 정리 싱글톤이 멀티스레드 환경에서 서비스 형태의 오브젝트로 사용되는 경우에는 상태 정보가 없는 무상태(stateless) 방식으로 만들어져야 하는데, ConnectionMakergithub.com  싱글톤이 멀티스레드 환경에서 서비스 형태의 오브젝트로 사용되는 경우에는 상태 정보가 없는 무상태(s..

java & spring 2024.08.20

[Spring] IoC 컨테이너와 Bean

0. Intro이 글은 Spring 공식 문서 'Core Technologies'의 'IoC Container'에 대하여 정리한 글입니다.+ 토비의 스프링 스터디에서 동일한 내용에 대한 PR 링크입니다.1. IoC Container : ApplicatoinContextorg.springframework.context.ApplicationContext interface는 Spring IoC Container를 나타내며, Bean을 인스턴스화, 구성(configuring)하는 일을 담당한다. 또 BeanFactory의 하위 인터페이스로, 몇가지 enterprise-specific functionality의 추가적인 기능을 제공한다.container는 configuration metadata를 읽음으로써 인..

java & spring 2024.08.13

[Java/Spring] Java Bean vs Spring Bean, Bean이란?

0. IntroSpring 공식 문서에서 Bean에 대한 정의를 읽으면서, 'Java에서 정의하는 Bean은 어떻게 다르지?'라는 궁금증이 생겼다.Java에서 정의하는 Bean과 Spring에서 정의하는 Bean이 조금씩 다르다는 것을 알게 되었다.Java와 Spring에서 Bean을 각각 어떻게 정의하는지 알아보자. 1. Java Bean 이란?POJO(Plain Old Java Object)에서 몇가지 규칙들이 추가된 객체이며, DTO와 VO와 같이 데이터를 표현하기 위한 목적을 가지고 있다. 규칙은 아래와 같다.1. 멤버필드를 프로퍼티(Property)라고 하며, 모든 프로퍼티는 private 접근 지정자여야 한다.2. getter, setter로 private 프로퍼티(property) 멤버필드 ..

java & spring 2024.08.08

[Docker] 디폴트 Logging Driver는 로그 파일을 관리하지 않는다...?!

0. Intro놀랍게도 도커의 디폴트 Logging Driver인 'json-file'은 NO log-rotation이라고 한다.log-rotation이란?로그 파일의 크기 제한 등의 방법으로 로그 파일이 너무 커지지 않도록 관리하는 것을 의미한다. 결과부터 얘기하자면, 나는 'json-file' 디폴트 드라이버 대신 'local' 드라이버로 바꾸고 max-size, max-file 옵션들은 기본 값 그대로 사용하였다. Docker Logging Driver 공식문서 어쩌다 로그 관리도커로 배포한 서비스에서 로그를 확인하던 중 문득 로그가 기록된 첫 날짜를 확인해보고 싶었다. 당연할 수 있겠지만 확인해본 결과, 컨테이너가 run한 시점부터 모든 기록이 쌓이고 있었다. (도커에서 기본적으로 retentio..

infra 2024.08.06

[Spring] 새로운 마음으로 Spring 시작하기 (with 토비의 스프링 + 공식 문서)

어쩌다 Spring스프링을 단순 프레임워크 사용자로 사용만 해보았고, 제대로 구조와 원리에 대해서 공부하진 않았다.spring 구조, 원리, 가치에 대한 이해가 부족하니 선택 기준이 정립되지 않았고, 개발도 일관성이 떨어진다고 느꼈다.그래서 토비의 스프링 교재와 Spring 공식 문서를 통해 spring의 구조와 원리를 학습하고 spring의 가치와 목표를 이해하여, 스프링을 효과적으로 사용하는 개발자로 성장하고자 한다.  앞으로의 계획1. 토비의 스프링 예제 코드에 대한 기록은 GitHub에 기록한다.2. Spring 공식 문서는 친구와 함께 월~금 매일 읽고, 매주 월요일 정리한 내용을 공유한다.3. 토비의 스프링 + 공식 문서 내용을 함께 정리하여 기록한다. 자세한 기간은 공부하면서 진행 속도를 살..

etc/study 2024.08.05

[AWS] HTTPS 처리를 시작으로 도메인 설정 과정 "이해"로 끝내기 (EC2, ACM, ELB, Route53)

0. Intro가비아에서 구매한 도메인 ghostpong.site로 EC2 배포를 했다. HTTPS 처리를 위해 ACM에서 SSL 인증서를 발급 받고, ELB(ALB) 로드밸런서로 HTTPS 처리하면서 여러가지 어려움을 겪었다. 전체적인 흐름, DNS 등에 대한 이해도가 부족하니 문제 해결에 어려움이 있었다. "똑같이 따라 했는데 왜 안 되지?"와 같은 상황을 방지하기 위해 이해가 필요하다고 판단하여 이 글을 작성하게 되었다. SSL 인증서 발급하기, ELB 인스턴스 생성하기 등 AWS 사용법은 다른 블로그에서 이미지와 함께 상세한 설명이 잘 되어있어서 생략한다. 단순 사용법이 아니라, 각 단계별로 어떤 설정을 하고, 왜 하는 것인지, 어떤 의미인지 이해할 필요가 있다.  참고로 EC2, ELB, Rou..

infra 2024.08.01

[42 seoul] 42서울 4기 합격 후기

4기 1차 라피신이 끝나고 2차 라피신이 시작 되어서 한달을 넘게 기다렸는데 드디어 발표가 났다! 2차 라피신이 종료하고 일주일 뒤인 금요일에 발표가 나왔다. 3기 후기에서는 오전 9시 42분에 메일이 왔다길래 오전부터 기다렸는데 오후 4시 42분에 메일이 왔다 ㅠ 기다리다가 지쳤었다.............. 핸드폰으로 메일 확인을 했는데 "최종 합격" 보고 매우 안심...ㅋㅋㅋㅋ 메일 확인하고 "kick off"까지 완료 했다 ㅎㅎ 1차에서 코로나로 일주일 중단 되었던 것과 2차에서 final exam이 제대로 이루어지지 않았던 것 때문에 통합 선발을 하지 않고 1차, 2차 각각 뽑았다고 한다. 2차 끝나는 것만 기다렸는데 ㅠ..... 애초에 따로 뽑는 게 맞았던 것 같다. 개인적으로 final exa..

etc/42 seoul 2021.04.24