자바를 공부하다 보면 운영체제 개념처럼 보이던 프로세스(Process)와 스레드(Thread)가 갑자기 코드와 연결되기 시작합니다. 처음에는 둘 다 그냥 "동시에 뭔가 실행되는 것"처럼 느껴지지만, 막상 면접 질문이나 실무 코드로 들어가면 프로세스와 스레드의 차이, 자바에서 멀티스레딩을 왜 쓰는지, 그리고 어디서 위험해지는지까지 함께 이해해야 합니다.특히 자바에서는 Thread, Runnable, synchronized, ExecutorService 같은 키워드가 이어서 나오기 때문에, 프로세스/스레드 개념을 애매하게 잡아두면 그다음부터 계속 헷갈리기 쉽습니다. 게다가 실무에서는 단순히 스레드를 "만드는 법"보다, 스레드 풀을 어떻게 관리하는지, 공유 자원을 어떻게 안전하게 다루는지, 서버에서 어느 구간..
자바를 공부하다 보면 생각보다 빨리 마주치는 주제가 바로 컬렉션 프레임워크입니다. 데이터를 여러 개 저장해야 할 때 배열만으로는 불편한 경우가 많고, 그때부터 List, Set, Map 같은 타입이 본격적으로 등장하기 때문입니다.문제는 여기서부터 시작됩니다. List는 순서가 있다고 하고, Set은 중복이 없다고 하고, Map은 key와 value로 저장한다고 하는데, 막상 코드를 짤 때는 언제 무엇을 써야 하는지, ArrayList와 HashSet, HashMap은 어떤 차이인지, 실무에서 어떤 기준으로 선택하는지가 헷갈리기 쉽습니다.그래서 이 글에서는 자바 컬렉션 프레임워크를 처음 보는 사람도 이해할 수 있게 Collection Framework의 전체 구조부터, List, Set, Map 차이, 그..
젠킨스를 처음 설치할 때 가장 어려운 부분은 명령어 자체보다 설치 후 웹 화면에서 무엇을 순서대로 눌러야 하는지입니다.특히 초보자는 Unlock Jenkins 화면, 초기 비밀번호 확인, 플러그인 설치, 관리자 계정 생성, 새 Job 만들기, 첫 빌드 로그 확인까지 흐름이 한 번에 안 잡히는 경우가 많습니다.그래서 이번 글은 개념 설명을 길게 늘어놓기보다, Ubuntu 서버에 Jenkins를 설치하고 웹 화면에서 첫 빌드 확인까지 가는 실제 순서만 따라가기 쉽게 정리하겠습니다.진행 기준 환경: Ubuntu 서버목표: Jenkins 설치 후 웹 접속 + 첫 빌드 로그 확인읽는 방법: 위에서 아래로 그대로 따라 하면 됨이번 글의 실제 흐름1단계 Ubuntu에 JDK와 Jenkins 설치2단계 브라우저에서 U..
개발이나 서버 운영 공부를 하다 보면 어느 순간 거의 반드시 만나게 되는 이름이 바로 쿠버네티스(Kubernetes)입니다. Docker까진 이해했는데, 그다음부터는 “그래서 왜 쿠버네티스까지 써야 하지?”, “컨테이너 여러 개 띄우는 것과 뭐가 다른 거지?”에서 많이 막히게 됩니다.특히 입문자 입장에서는 아래 질문이 한꺼번에 나옵니다.쿠버네티스는 정확히 무엇인가?Docker만 있으면 되는 것 아닌가?왜 기업 서비스에서 쿠버네티스를 많이 쓰는가?Pod, Node, Deployment 같은 용어는 어떻게 이해해야 하는가?이번 글에서는 쿠버네티스를 처음 접하는 분 기준으로 쉬운 정의 → 왜 중요한가 → 기본 구조 → Docker와 차이 → 어디서 많이 쓰이는지 → 자주 헷갈리는 포인트 순서로 한 번에 정리하..
Spring Boot에서 로그인 기능을 구현하려고 하면 많은 개발자가 여기서 막힙니다. 세션 로그인과 JWT 로그인은 무엇이 다르고, Spring Security 설정은 어떻게 잡아야 하며, Access Token과 Refresh Token은 어디서 발급하고 어떻게 검증해야 하는지 한 번에 정리되지 않기 때문입니다.특히 JWT 로그인은 단순히 토큰 하나 발급해서 끝나는 구조가 아닙니다. 인증 필터, Security 설정, 토큰 생성, 토큰 검증, 만료 처리, Refresh Token 재발급 흐름까지 같이 봐야 실제 서비스에 넣을 수 있습니다. 그래서 이 글에서는 개념 설명과 함께 실제 구현 흐름, 자주 막히는 포인트, 확인 방법까지 같이 정리합니다.결론부터 말하면 Spring Boot JWT 로그인 구현..
