전체 글

백엔드 프로그래머를 준비하고 있는 대학생입니다 😜 Spring, Java, Git 공부 및 프로젝트 내용을 기록하고 있습니다! 함께 공부하시고 싶으신 분들은 댓글로 함께 소통해요! github : https://github.com/PgmJun
BackEnd

[Nginx] 스프링부트에 Nginx 리버스 프록시(Reverse Proxy) 서버 연결하기

리버스 프록시를 도입하게된 계기 💭졸업작품인 코리(Co:RE)의 서버를 개발하면서 실제로 배포를 위한 환경을 만들려고 하다보니,보안적인 요소를 생각하지 않을 수 없었다. 1차적으로 생각이 난 부분은 당시 학습하고 있었던 프록시 서버였다.프록시 서버에 대해 모르는 사람은 해당 포스팅을 참고해주세요! 리버스 프록시 서버를 적용하면 보안상 이점과 여러 장점들을 얻을 수 있는데,그 중 내가 생각한 장점은 아래와 같았다.  ⚙️ 보안개발자 도구에 WAS의 주소가 그대로 노출되어 다양한 공격의 가능성이 발생한다.여기에 리버스 프록시를 적용하게 되면 서버를 직접 노출시키지 않고 클라이언트와의 통신을 중계하므로 서버의 실제 위치를 숨기고 보안을 강화할 수 있다.프록시 서버로 인해 본래 서버의 IP 주소를 노출시키지 ..

BackEnd

프록시(Proxy) 서버란?

프록시 서버란? 🤔 `Proxy`라는 단어는 대리(행위)나 대리권, 대리 투표, 대리인 등을 뜻하며 말 그대로 서버 요청에 대한 대리자 역할을 수행하는 것을프록시 서버 라고 한다.프록시 서버(Proxy Server) 는 클라이언트와 서버 사이에서 동작하는 중간 서버를 의미한다.클라이언트가 서버에 직접 요청을 보내는 대신 `프록시 서버`는 클라이언트 요청을 받아 서버로 전달하고, 서버에서 받은 응답을 클라이언트에게 다시 전달하는 중계자 역할을 한다.프록시 서버의 종류 ⚙️ 프록시 서버는 아래와 같이는 2가지 형태가 있다.  💡 포워드 프록시(Forward Proxy) `클라이언트`와 `인터넷` 사이에 있는 프록시 서버를 뜻한다.`포워드 프록시`는 클라이언트의 익명성을 보장한다.클라이언트의 요청을 가로채..

외부활동

[길벗 리뷰어] 현직 LINE 개발자가 알려주는 읽기 쉽고 코드 리뷰하기 좋은 코드 작성 가이드 리뷰

최근 길벗에서 "읽기 쉽고 코드 리뷰하기 좋은 코드 작성 가이드"라는 책 리뷰어를 구하는 것을 보고 고민없이 지원하여 읽게 되었다.한참 읽기 쉽고 리뷰하기 좋은 코드에 대해 고민하고 있던 나에게 정말 절실한 책이었다. 이 책을 받기 전, 서적을 판매하는 각종 사이트에 들어가 해당 책에 대한 리뷰를 확인하였는데, 대부분의 리뷰가 만점일 정도로 좋은 책이었다.실제로 받아본 이 책은 현직 LINE 개발자들의 실제 경험을 바탕으로 작성된 이 책은 실용적인 조언과 유용한 팁으로 가득 차 있었고본인도 이 책 덕분에 소프트웨어 개발 능력을 한 단계 끌어올리는 데 도움이 받을 수 있었다. 보통 해외에서 작성되어 번역본으로 출판된 개발 서적들은 번역본이 어색해서 이해하기 어려운 내용들이 많다.이 책도 국내 개발자분이 아..

Git

[Git] Github 협업 이것만은 알자!

벨로그에 연재하고 있는 깃허브 협업에 대한 기초 지식을 쌓을 수 있는 시리즈입니다! 필요하시면 참고하세요 :) 시리즈 | Github 협업, 이것만은 알자 - pgmjun.log 이슈(Issue)란 프로젝트에서 작업해야할 단위라고 할 수 있습니다.개발해야하는 기능 발생, 수정해야할 사항 버그 발생, 리팩터링 해야하는 코드 발생 등 프로젝트에서 발생되는 작업들을 이슈로 velog.io

BackEnd/Spring

[Spring / Java] @PostConstruct, Static Block, Instance Block 초기화 시점 차이

자바 스프링 기술로 개발을 해봤다면 @PostConstruct 과 Static block, Instance block 을 사용해본 경험이 있을 것이다. 이는 객체 초기화를 위한 콜백(callback) 함수를 선언하기 위한 기술이다. 콜백(Callback) 함수란? 콜백 함수는 다음과 같은 의미를 가진다. 다른 함수 인자로서 사용되는 함수 어떠한 이벤트에 의해 호출되는 함수 이 글에서의 설명은 2번째 의미인 '어떠한 이벤트에 의해 호출되는 함수' 에 가깝다. 본인또한 이 3가지를 종종 다루긴 했지만, @PostConstruct 와 Static block 중 어떤 것을 사용할 지 고민하던 중 이 두 가지의 초기화 시점 차이에 대해 정확히 인지하지 못한 채로 사용하고 있었다는 것을 깨닫게 되었다. 때문에 이를..

BackEnd/Spring

[Spring] 의존성 주입 시, 같은 Type의 빈이 2개 이상일 경우

우리는 스프링을 사용할 때, 생성자 주입을 통해 의존성을 주입하곤 한다. 그런데 의존성을 주입하는 경우, 2개의 의존성 중 하나를 주입해야하는 경우가 있을 것이다. public interface DiscountPolicy {} @Component public class FixDiscountPolicy implements DiscountPolicy {} @Component public class RateDiscountPolicy implements DiscountPolicy {} @Autowired private DiscountPolicy discountPolicy 만약 위와 같이 FixDiscountPolicy와 RateDiscountPolicy가 스프링 빈으로 존재할 때, 다음과 같이 @Autowire..

BackEnd/Spring

[Spring] 컴포넌트 스캔(ComponentScan)

이전 글을 통해 @Configuration 애노테이션을 통한 스프링 빈 등록에 대해 알아보았다. [Spring] @Configuration과 싱글톤 (with. CGLIB) @Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy()); } @Bean p pgmjun.tistory.com 하지만 꼭 빈을 등록할 때, @Configur..

BackEnd/Spring

[Spring] @Configuration과 싱글톤 (with. CGLIB)

@Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } } 해당 코드는 OrderService, MemberService, MemberRepository 빈(Be..

PgmJUN
Back world