BackEnd

· BackEnd
웹 서버(WS)의 진화 : Apache vs NGINX위 post에 이어지는 내용입니다.WAS(Web Application Server) 란?WAS의 정의먼저 WAS(Web Application Server)의 정의는 다음과 같다.웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크 대표적으로 Apache Tomcat이 있다.참고로 Apache Tomcat는 WS 단계에서 계속 이야기했던 Apache와는 아예 별개의 소프트웨어이다.Apache와 TomcatApache HTTP Server (보통 Apache라고 부름)웹 서버(WS) 역할을 담당주로 정적 콘텐츠를 처리HTTP 요청을 처리하며, 동적 콘텐츠를 처리할 경우에는 WAS(Tomcat)와 연동하여 작업을 나눕니다.A..
· BackEnd
1. 웹서버(WS)에 대하여1-1. 웹서버(WS) 란?NGINX, Apache 두 소프트웨어 모두 “웹서버 소프트웨어”이다.그렇다면 WS(웹서버)란 무엇일까?클라이언트의 HTTP 요청을 받아 정적인 컨텐츠를 제공하는 서버 혹은 프로그램이다.이후에 다시 말하겠지만, WS는 정적인 컨텐츠를 서비스하는 데에 특화된 서버 소프트웨어이다.동적인 콘텐츠를 처리 못한다는 것은 아니다.참고로, Apache의 경우 자체적으로 동적인 컨텐츠 또한 처리가 가능하다.NGINX의 경우 불가능하다.하지만, 동적 처리는 보통 WAS(Web Application Server)에서 주로 수행하므로, Web Server는 프록시 역할만 하면 충분하다.여기서 주요한 점은 “정적인 컨텐츠”이다.html, JS 같은 정적인 컨텐츠들 정도는 ..
· BackEnd
✒️ 들어가기 전카카오 OAuth 로그인을 구현하는 방법에 대해 상세히 알아보자.다음 글은 KAKAO DEVELOPLER 공식 문서를 참고하여 작성함.https://developers.kakao.com/docs/latest/ko/kakaologin/commonhttps://developers.kakao.com/docs/latest/ko/kakaologin/rest-api 구현 코드https://github.com/jinho7/6th_SPRING/commit/75637e4bed09b0eba2807db00a45c60f39b591f5  ✒️ OAuth의 개념 이해OAuth는 Open Authorization의 약자이다.애플리케이션이 특정 시스템의 보호된 리소스에 접근하기 위해,사용자 인증(Authenticat..
· BackEnd
✒️ 0. 들어가기 전 : 간단한 CRUD도 고민할 게 너무 많다."개발"을 잘한다는 것은 무엇일까?우리는 코더가 아닌 개발자이다. 누군가는 무슨 최신 기술을, 누군가는 어떤 것까지 할 수 있다고 말한다.과연 그 기술을 어디까지 알며, 왜 사용했고, 어떤 로직으로 굴러가지는 설명할 수 있을까?되묻고 싶다. 왜 여기서는 RequestParam을 썼고, 여기는 왜 PathVariable로 썼고,에러처리는 어떻게 했고, RestControllerAdvice를 사용했는데 그 원리는 무엇이고,시큐리티와 JWT는 왜 썼고, 세션과 쿠키와 토큰의 차이는 무엇이며..내 코드의 성능은 얼마나 좋을까? 더 개선할 수는 없을까?...................... 나는 CRUD 하나만 해도 충분히 고민할 게 넘쳐난다고 ..
· BackEnd
🤔 문제 인식우리는 엔티티를 설계하다 보면 여러 Table을 매핑 할 때가 너무 너무 많고,어쩌면 "내부로직"을 모르고 가져다 쓰는 경우가 많은 것 같다. 한 번 내 코드를 봐보자.@Entity@Table(name = "user")@Builder@Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)@AllArgsConstructor(access = AccessLevel.PRIVATE)public class User extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; // ... 중략 // Mapping @On..
· BackEnd
1. 문제점SpringSecurity/JWT를 사용한, 인증/인가 과정에서 발생하는 Exception을 처리하고 에러를 표준화하는 과정에서 문제가 발생했다.JWT 로그인 구현 중 UsernameNotFoundException 처리가 안 되는 현상이 발생한 것중요한 것은우리가 원하는 것은 로그인 실패 응답을 두 가지 케이스로 나누는 것."존재하지 않는 회원의 이메일입니다.""비밀번호가 일치하지 않습니다."하지만, 포스트맨을 통해 확인한 결과 모두, 잘못된 자격증명으로 답변이 온다...2. 원인파악코드를 순서대로 따라가보자.UsernamePasswordAuthenticationFilter를 확장하여 커스터마이징한, LoginFilter를 살펴보자.여기서, 실패한 경우 @Override protec..
· BackEnd
1. 사건의 발단날씨 앱을 만드는 과정에서사용자가 설정창에서 ON 해놓은 정보들만 메인 화면에 띄울 수 있는 기능이 있다. 그래서 dto를 이렇게 잡고 시작했다.public record DisplayDto( boolean precipitation, boolean wind, boolean dust) {} 자.. 이제 수정 하기 위해 코드를 짰다.// 메인 화면 날씨 상세 정보 보기 (강수량, 퓽향/풍속, 미세먼지)@PutMapping("/display")public ApiResponse updateDisplay(@AuthUser User user, @RequestBody SettingReqDto.DisplayDto displayDto) { settingServic..
· BackEnd
해당 포스트 (1) ~ (7) 과정의 코드를 리펙토링 한 것이다! Spring Boot에서 JWT 프로젝트 세팅하기 / Filter 테스트 (1)VERSION springboot : '3.2.3' java : '17' 1. build.gradle에 Dependecy 추가 plugins { id 'java' id 'org.springframework.boot' version '3.2.3' id 'io.spring.dependency-management' version '1.1.4' } group = 'com.example' version = '0.0.1-SNAPSHOT' java { sjinhos-devlog.tistory.com수정한 부분만 설명하겠다! 0. 프로젝트 설명해당 구조로 이루어지며,- co..