본문 바로가기

Tech

(6)
REST API 안녕하세요! J입니다. 오늘은 REST API에 대해서 정리해보도록 하겠습니다. 왜 생겼을까? REST는 2000년도에 로이 필딩 박사에 의해 소개되었습니다. HTTP의 주요 저자 중 한 사람인 그는 당시에 HTTP 설계의 우수성에 비해 제대로 활용되지 못하는 모습을 보고 HTTP의 장점을 최대한 활용되기를 바라고 있었습니다. 그래서 REST 디자인 패턴(또는 형식)를 만들어 소개하였습니다. REST란? API란 서버와 클라이언트 사이에 지정된 방식으로 이뤄지는 소통 방식입니다. 사실, 프로그램의 동작에 있어서 크게 중요한 역할을 끼치지는 않는다고 생각했습니다. 하지만, 동료 개발자와의 협업이나 여러 이용자들의 편의를 위해서 API를 개발함에 있어서 일종의 공유되는 방식이 룰처럼 적용된 것이 REST A..
Spring Boot 프로젝트 생성 및 빌드 오늘은 Spring 프로젝트를 생성할 때 가장 잘 사용되는 Spring Initializr에 나오는 내용을 간단하게 정리해 보도록 하겠습니다. https://start.spring.io/ 위의 링크를 들어가면 아래와 같은 초기화면이 나옵니다. 가장 먼저 빌드 관리 도구를 선택할 수 있습니다. 크게 두 가지로 나뉩니다. Gradle과 Maven이 있죠. 저는 Maven을 사용하기 위해 작성된 파일인 pom.xml을 본 적은 있지만, 빌드를 위해서 선택한 경험이 없습니다. 그 이유는 점점 Maven에서 Gradle로 옮겨가는 상황인데요, 그 이유는 성능에 있습니다. 먼저, Gradle은 Maven과 다르게 설치 없이 사용할 수 있습니다. 또한, 멀티 프로젝트의 빌드에 최적화하여 설계되었고, Maven에 비해..
JAVA에 대한 기본지식 안녕하세요! J입니다. 저는 KDT교육기관에서 JAVA 언어를 배우는데요. 오늘은 그 프로그래밍이 아닌 JAVA라는 언어 자체에 대한 내용, 작동원리 등을 정리해 보도록 하겠습니다. 프로그래밍은 바꿔서 얘기하면 명령하는 것이라고 할 수 있겠습니다. 그 대상은 바로 컴퓨터입니다. 특히, 컴퓨터에서 연산을 담당하는 CPU를 포함한 대부분의 기계는 전기 신호를 통해 작동합니다. 그 전기 신호의 가장 직관적인 형태가 바로 0과 1로만 이루어진 기계어이죠. 기계어의 예시를 한 번 보여드리겠습니다. 느낌이 어떠신가요? 저는 프로그래밍을 시작한 지 얼마 되지 않았습니다만, 만약 기계어로 프로그래밍을 하는 시대였다면, 아마 시작하지 않았을 것 같습니다. 다행스럽게도 그 시대에 안주하는 사람들만 있지 않아 발전에 발전을..
JWT & Refresh Token 안녕하세요! J입니다. 오늘은 인증에 대한 내용과 JWT와 Refresh Token에 대해서 정리해 보도록 하겠습니다. 인증 또는 로그인에 대해서 저는 그냥 회원가입에 등록한 ID와 PW가 전부라고 생각했었는데요. 백엔드 스쿨에서 공부하며 제 예상을 깨거나 제가 몰랐던 서버가 가진 부담들에 대해서 알 수 있었습니다. 제 예상을 깨는 포인트는 바로 HTTP의 특성인 비연결성과 무상태성입니다. 백엔드 스쿨 이전의 저는 한 번 로그인을 하면 창을 닫기 전, 로그아웃을 하기 전까지는 계속 저와 서버가 연결되어 있고, 로그인 상태가 유지되어 있다고 생각했습니다. 하지만 그것으로 인해 발생하는 서버의 부담에 대해서는 전혀 알지 못했습니다. 가장 먼저는 stateful 하다는 점이 있고, 서버를 확장할 때 어려움이 ..
JAVA GC 안녕하세요! J입니다. 오늘은 Java의 Garbage Collection에 대해서 알아보도록 하겠습니다. (기술 면접 단골 질문이라고 합니다. 동기부여가 되었으면 좋겠습니다.) 집이나 방에 쓰레기가 많다면 생활하는데 매우 불편하듯이 컴퓨터의 메모리도 마찬가지입니다. 프로그램에 불필요한 데이터가 메모리에 계속 남아있다면 당연히 좋지 않을 것입니다. GC는 메모리를 효율적으로 관리하기 위해서 사용되는 기술입니다. GC는 동적 메모리 영역인 힙 영역을 대상하며, 두 단계에 걸쳐 GC는 진행됩니다. GC의 과정 1단계는 Mark, 2단계는 Sweep 이라고 합니다. 1단계인 Mark에서는 없앨 데이터와 남길 데이터를 분류하는 단계입니다. 스택영역에 변수가 할당되고, 힙 영역에는 new를 통해 생성된 객체나 배..
Spring Boot 안녕하세요! J입니다. 오늘은 어떤 점에서 사람들이 스프링부트를 편하다고 하는지 기록해보겠습니다. 특히, 스프링부트에 대해서 개발자가 개발에만 집중할 수 있게 해준다는 칭찬이 많았습니다. 그 동안 개발자가 개발에만 집중할 수 없도록 방해되는 요소로 무엇이 있고, 스프링부트는 그것들을 어떻게 해소시켰는지 집중적으로 보겠습니다. 제가 지난 5개월동안 멋쟁이사자처럼 백엔드 스쿨에서 배운 것은 Java와 Spring Boot입니다. Spring Boot를 처음에 배우면서 이것을 배우는 이유는 개발을 편하게 할 수 있는 프레임워크라는 이유때문이었는데요. 당시, 강사님이 되게 혁명적인 기술이라고 엄청 칭찬을 했던 기억이 납니다. 하지만, 비전공자인 저에게 편하다/불편하다는 개념은 존재하지 않았어요. 저는 그저 처음..