전체 글

전체 글

    [tomcat] Session Deep Dive

    클라이언트와 서버 간의 요청, 응답을 위해서 HTTP 프로토콜 사용한다. 거의 모든 웹서비스는 HTTP 프로토콜 기반이다. HTTP 프로토콜은 Stateless한 특징을 가지고 있기 때문에 매번 번거로운 사용자 인증, 인가 절차를 해결하기 위해서 Session과 Token 방식을 많이 사용하고 있다. Session과 Token의 차이점을 간단히 비교하고 본문의 내용에선 Session에 관한 부분을 Deep Dive 해보도록 하겠다. HTTP 프로토콜에 대한 이해 Stateless(무상태성)한 프로토콜이기 때문에 요청 - 응답 사이클마다 연결을 끊는다. 그렇다면 이전 사용자를 식별하기 위해서 어떤 방법을 사용해야 할까? Token, Session 방법이 있겠다. 요즘은 Token 방식을 많이 활용한다. S..

    [mac] ssl 설정 시 인증서가 올바르지 않습니다.

    상황 회사 프로젝트 중 로컬 개발 환경에서 SSL을 설정할 일이 있었다. 인증서와 키스토어를 WAS에서 설정해 주었지만 브라우저 주소창엔 인증서가 올바르지 않다는 문구가 계속 떴다. etc 폴더에 있는 hosts loopback interface 설정 삽질만 이틀간 지속했다.. 원인 Mac OS는 운영체제 상에서 80 포트를 이미 사용하고 있기 때문에 패킷 관련 설정 파일에서 Default Port를 사용할 수 있도록 사용할 포트와 forwarding 시켜줘야 한다(설정 방법은 참고한 래퍼런스에 자세히 나와있다). 이처럼 https의 Default Port인 443 포트도 사용할 포트와 forwarding 시켜줘야 SSL이 정상적으로 적용된다. 물론 이 모든 것은 이 외 모든 설정과 인증서에 문제가 없다..

    [java] JVM의 Runtime Data Area에 대한 탐구

    나는 요즘 Github에 기술 스크립트를 정리하고 있다. 알고 있다고 생각하는 것도 실제 말로 내뱉는 게 어렵기 때문에 글로써 정리할 필요가 있겠다고 생각했고, 나중에 기술 면접에도 도움이 되지 않을까 싶었다. Java의 구조부터 차근차근 정리하려고 계획 중이고 너무 기초적인 것은 넘어가려고 한다. Java의 큰 장점 중 하나는 플랫폼(Operating System)에 종속되지 않고 독립적이라는 것인데 이런 장점을 제공하는 것이 JVM이다. JVM의 아키텍처는 핵심 기능을 하는 여러 개의 컴포넌트들로 이루어져 있지만, 첫 번째로 Runtime Data Area에 대한 탐구를 해보고자 한다. 상대적인 네이티브 언어와는 다르게 Java는 개발자가 Storage를 관리할 필요가 없는 Garbage Collec..

    시작

    개발자가 되겠다고 공부에 전념한 지 약 7개월이 넘었다. 취업은 약 2-3주간 준비했고, 나는 백엔드 개발에 전념할 수 있는 회사에만 지원했다. 각 포지션이 확실히 분리되는 B2C 서비스 회사를 원했지만 현실적으론 규모가 작은 스타트업 밖에는 기회가 없었다. 그 마저도 투자를 받았고 성장 가능성이 있는 스타트업이면 나보다 더 뛰어난 사람들과 경쟁해야 했다. 중견 이상의 기업들은 학력 때문에 도전 조차 하지 못했다. 서류 탈락이 쌓여갈수록 자존감이 바닥을 쳤고 시간을 더 투자하더라도 공부를 해야 할 것 같았다. 그럼에도 나에겐 항상 하나의 의문이 있었는데 내가 바르게 가고 있는지에 대한 의문이었다. 시간을 더 투자한다고 해서 이 의문이 사라지진 않을 것 같았고 현업에서 실무를 직접 겪어봐야 방향을 잡을 수..

    [issue] Failed to start bean 'documentationPluginsBootstrapper’

    계기 프로젝트에 Swagger API를 적용하는 중 해당 이슈를 만났다. 나중에 새로운 프로젝트에 적용할 때도 만날 수 있을 이슈라고 판단되어서 정리를 해보고자 한다. 생각보다는 간단한 문제였다. 탐구 해당 이슈는 SpringBoot가 버전 업을 하면서 `mvc - pathmatch - matching-strategy` 기본 값이 `ant_path_ matcher` 에서 `path_pattern_parser` 으로 변경되면서 생긴 문제였다. 고로 yml 혹은 properties 파일에서 기본 값을 수정하면 해결된다. 그렇다면 프레임워크 안에서 `matching-strategy` 가 하는 역할이 무엇일까 내부적으로 이 설정 값은 2개의 Enum 데이터를 가지고 있고 `AntPathMatcher`와 `Pat..