STUDY/서버
[JAVA] JVM 구조 총정리
🔓 모든 스레드가 공유하는 데이터 영역 1. Class Area (=Method Area, Static Area, Code Area) 💾 저장되는 정보 클래스 정보(멤버 변수 이름), 변수 정보(데이터 타입, 접근 제어자 정보) 메서드 정보(메서드 이름, 리턴타입, 파라미터, 접근제어자 정보) static 변수, final class 변수 constant pool (상수풀: 문자상수, 타입, 필드, 객체 참조가 저장됨) ⏰ 생성시점 JVM이 동작해서 클래스가 생성될 때 생성된다. 2. Heap Area (객체들의 놀이터) new 를 통해 생성된 객체와 배열이 저장되는 영역 Method Area에 로드된 클래스들만 생성이 가능하다. GC의 주요 대상이 된다. - 효율적인 GC를 위해 메모리 영역이 분리되어..
[서버] CI/CD 그리고 Jenkins (젠킨스)
앱 자체를 만들고 최적화 시키는 것에만 관심을 가지고 있었습니다. 그런데 제가 서버를 멘토링을 하고 있는 멘티가 CI/CD와 젠킨스에 대해 관심을 갖더라구요. 저는 아는 바가 없어서 해줄 얘기를 찾기 위해 구글링을 하다보니 젠킨스를 사용해보고 싶다는 생각이 격렬히 들었습니다. 그동안 로컬에서 API를 빌드하고 테스트하고 테스트가 완료된 API를 서버에 올려주는 과정이 매우 귀찮다고는 생각하고 있었는데 역시 이런 귀찮음은 역사가 오래된 귀찮음이었나 봅니다. 사설은 줄이고 CI/CD와 젠킨스에 대해 알아봅시다! CI/CD CI(Continuous Integration) : 여러 개발자들의 코드를 계속해서 통합하는 것. CD(Coutinuous Delivery) : 개발자들이 코드를 계속 작성하면, 사용자 및..
[TI/SPRING] IOC, DI 정의/ 장점
[Tech Interview] IoC, DI는 무엇이고 어떠한 장점이 있을까요? IOC 란 무엇인가? IOC 는 SPRING 용어가 아닙니다.SPRING 이전에도 존재했던 용어죠. IOC는 Inversion of Control 의 약자입니다. 단어를 좀 뜯어볼까요? Inversion 역전 Control 제어 즉, IOC는 제어의 역전입니다. 그럼 뭘 제어하고 뭘 역전했다는 것일까요? 이전 포스팅에서 SPRING 을 EJB 와 비교해서 설명할 때 제어에 대해서는 많이 이야기를 했습니다. 원래는 제어는 개발자가 구현해야 했습니다. 하지만 EJB와 SPRING 모두 편리한 개발, 즉 개발자가 복잡하고 실수하기 쉬운 로우레벨의 기술에 많이 신경쓰지 않고도, 애플리케이션의 핵심인 사용자의 요구사항, 즉 비지니스 ..
[TI/Spring] 스프링이란? EJB와 비교
[Tech Interview] Spring이란 무엇인가요? Spring이 이야기하는 장점에는 무엇들이 있을까요? (EJB와 비교해서 설명하면 좋을듯) EJB (Enterprise Java Bean) EJB는 스프링을 설명하기에 좋은 도구가 될 듯합니다. EJB는 Enterprise Java Bean 의 약자입니다. 우선 Bean 은 객체라고 이해하면 좋습니다. Java Bean 이란 자바 객체를 재사용 가능하도록 정의한 것입니다. 즉, Enterprise Java Bean은 엔터프라이즈(기업)급 어플리케이션을 개발할 때, 자바 객체를 재사용 가능하도록 정의하여 편리하게 개발 할 수 있도록 발표한 스펙이라고 이해하면 됩니다. 그럼 편리한 개발이란 무엇일까요? 편리한 개발이란 개발자가 복잡하고 실수하기 쉬운..
백엔드 개발자 기술면접 질문 정리
오늘부터 다음 git에 정리된 기술면접 질문에 대한 답변을 하루에 한 개씩 블로그와 깃에 정리하려고 합니다. 블로그에 공공연히 선언해야 시작할 때의 열정이 사라지지 않을 것 같기에! https://github.com/Lob-dev/Junior-Back-end-Developer-Concepts/blob/main/Job%20interview.md GitHub - Lob-dev/Junior-Back-end-Developer-Concepts: Java, Spring 위주의 Back-end 신입 개발자를 위한 저장소입니 Java, Spring 위주의 Back-end 신입 개발자를 위한 저장소입니다. 지속적인 개선, 업데이트를 진행하고 있습니다. - GitHub - Lob-dev/Junior-Back-end-Dev..
[SERVER][SPRING] 검색하기 API
현재 제가 하고 있는 프로젝트는 "식당 메뉴 리뷰 어플리케이션"입니다. 식당 리뷰 앱에 메뉴 리뷰까지 있는 경우는 많이 없기 때문에 식당에 가서도 뭘 먹을까 고민할 때가 있습니다. 식당 리뷰를 뒤져서 사람들이 뭘 많이 먹는지 찾아보곤 하죠ㅎㅎ 오늘 구현해 볼 부분은 검색창에 지역을 검색했을 때 해당 지역에 위치한 식당들만 불러오는 API를 만드는 것입니다. 앱에서 특정 키워드를 검색할 경우 해당 키워드를 파라미터로 받아서 쿼리로 필터를 적용하여 키워드에 해당하는 데이터만 받아오도록 해보겠습니다. 필요한 파일들입니다. 전체 파일구조는 다음과 같습니다. config 폴더와 src 폴더의 restaurant 폴더만 동일하게 구성하면 됩니다. 먼저 src > restaurant 폴더를 구현해 보겠습니다. --R..
[SERVER][HTTP, AJAX 통신, WebSocket, SSE] 특징, 장단점
HTTP HyperText Transfer Protocol HTTP 이전의 통신은 FTP, NNTP 등의 프로토콜이 사용되었는데, 터미널 위에서만 통신이 가능했으며 전문가 말고는 사용이 정말 어려웠습니다. Server와 Client간의 일련의 흐름을 하나의 약속으로 지정한 프로토콜이 바로 HTTP입니다. HTTP 통신 과정은 다음과 같습니다! Client가 어떠한 정보를 요청하면, Server는 그런 정보를 처리해서 HTML화 시킨 후 응답하는 거죠 하지만 이 방법은 큰 문제점이 하나 있었는데요! Server가 html을 통해서 결과창 자체를 결과로써 전송하기 때문에 client가 결과를 확인하기 위해서는 반드시 페이지를 이동해야 했다는 것입니다. 그래서 옛날에는 어떤 결과를 봐야할 때 팝업을 많이 이용..
[SERVER][DB] 데이터베이스 성능 향상을 위한 방법
사수님과 데이터 베이스 성능에 대한 의견을 나눴다. 사수님께서 제안하신 방법은 두 가지 였다. 1. 거리 계산 문제 현재 내가 만든 API는, 쿼리를 통해 사용자와 식당 간의 거리를 계산하여 Response한다. 하지만 사수님은 클라이언트 단에서 사용자 좌표에서 기준이 되는 거리만큼 떨어진 곳에 위치한 남서쪽, 북동쪽 좌표를서버로 보내주면 식당 좌표의 위경도와 남서쪽, 북동쪽 좌표의 위경도를 단순 비교하여 해당되는 식당을 Response하는게 어떠냐는 제안을 주셨다. 하지만 이 방법은 사용자 위치를 기준으로 사각형 범위 내에 있는 식당들만 가져오게 된다. 전자의 방법은 사용자 위치를 기준으로 원형을 그리면서 동일한 거리 내에 있는 식당을 가져오므로, 후자의 방법을 채택할 경우 훨씬 적은 숫자의 식당이 S..