전체 글

Spring

조회 성능 최적화 (1) - 쿼리 발생 줄이기

이번 포스팅에서는 데브코스 팀 프로젝트 진행 중에 경험했던 페이징 쿼리 최적화 과정에 대해서 소개하려고 합니다. Steady - 배포주소, 백엔드 깃허브개발자들을 대상으로 스터디 또는 프로젝트 인원을 모집할 때 구글 폼과 같은 외부 서비스에 의존하지 않고도 검증된 인원을 모집할 수 있도록 서비스 내에서 자체적으로 폼을 제공하고, 유저 평가 시스템을 통해 인원으 모집할 수 있는 서비스입니다.  위 이미지를 통해 알 수 있듯이 steady는 기술 스택, 모집 분야, 좋아요와 `일대다 관계`를 맺고 있습니다. 이러한 관계를 맺고 있는 데이터들이 존재할 때 동적으로 필터링 또는 검색 조건을 통해 조회하기 위해서 `QueryDsl`을 사용하였습니다. QueryDsl을 통해 작성한 메서드와 당시 DB 상황은 다음과..

Spring

테스트 객체 생성 라이브러리 Instancio, Fixture Monkey (feat. Test Fixture)

🟦Test Fixture 개발에 있어서 가장 중요한 요소 중 하나인 테스트 코드를 작성하다보면 여러가지 객체들의 상태나 행위에 대한 검증이 필요하게 되고, 이를 테스트하기 위한 테스트 객체(더미 객체)들을 만들게 됩니다. 그리고 우리는 이러한 객체들을 보통 `Test Fixture` 라고 부릅니다. Test Fixture의 정의는 무엇일까요? A test fixture is a device used to consistently test some item, device, or piece of software. Test fixtures are used in the testing of electronics, software and physical devices. 위 위키피디아 정의를 정리하면 일관된 테스트를 ..

CS

쿠키 & 세션 & JWT

오늘날 사용되는 웹 사이트는 Http 프로토콜을 통해 통신이 이루어집니다. Http 프로토콜은 `Stateless` 하다는 특징을 지니는데, 이는 Http 프로토콜을 통한 각각의 요청이 상태를 지니지 않아 이전 요청에 대한 정보를 알 수 없습니다. 하지만 회원을 다루는 사이트의 경우 각각의 요청이 어떤 사용자가 보낸 것인지 알아야 할 필요가 있습니다. 따라서 다양한 인증 방식을 도입하여 사용하는데 이에 대해 알아보도록 하겠습니다. 🟦인증 방식 🟩쿠키 쿠키는 웹 브라우저에서 로컬에 작은 텍스트 데이터를 저장하는 영역이라고 할 수 있습니다. 따라서 별도로 서버에 쿠키 정보를 저장하지 않고 사용할 수 있습니다. 쿠키는 클라이언트와 서버 간의 상태를 유지하고 추적하기 위해 사용을 하는데, 보통 `Name`과 `..

데브코스

[6/5 복습] OOP, SOLID, UML

✔ 해당 포스트는 프로그래머스 백엔드 `데브코스` 4기 교육과정을 듣고 정리하였습니다! ✔ OOP ( Object Oriented Programming ) `OOP`란 객체 지향 프로그래밍을 말한다. 여기서 객체 지향 프로그래밍이란 컴퓨터 프로그램을 어떤 데이터를 입력받아 순서대로 처리하고 결과를 도출하는 명령어들의 목록으로 보는 시각에서 벗어나 여러 독립적인 부품들의 조합, 즉 객체들의 유기적인 `협력`과 `결합`으로 파악하고자 하는 컴퓨터 프로그래밍의 패러타임을 의미한다. 이러한 OOP에는 추상화, 상속, 다형성, 캡슐화라는 4가지 특징이 있다. 1. 추상화 추상이라는 용어의 사전적 의미는 "사물이나 표상을 어떤 성질, 공통성, 본질에 착안하여 그것을 추출하여 파악하는 것" 이다. 여기서 핵심이 되는..

데브코스

[6/2 복습] JDK (Java Development Kit)

✔ 해당 포스트는 프로그래머스 백엔드 데브코스 4기 교육과정을 듣고 정리하였습니다! ✔ JDK ( Java Development Kit ) `JDK`는 개발자들이 Java로 프로그램을 만들 수 있도록 다양한 기능을 제공하는 키트입니다. 좀 더 자세한 특징들을 보도록 할까요? `JRE` 를 포함하며 Java 프로그램을 개발, 컴파일, 디버그 및 실행하는 데 필요한 도구를 제공한다. `Compiler (javac)` 를 포함한다. 자바 소스 코드 (.java) 를 컴파일하여 실행 하능한 바이트코드 (.class) 로 변환 자바 디버깅 툴 (jdb) 포함한다. JRE ( Java Runtime EnvironMent ) 쉽게 말하면 Java 코드를 실행하기 위한 도구들. Java Class Library, `J..

Java

OOP 다형성에 대한 고찰

자바를 배우는 우리에게 OOP란 정말 중요한 개념이다. 그 중에서도 다형성이라는 부분이 언뜻보기엔 쉬워보이면서도 막상 보면 그렇지 않다. 이번 시간을 통해 다형성에 대해서 좀 더 자세하게 알아보도록 하자. 다형성(Polymorphism)이란 무엇일까? 다형성은 이름 그대로 어떤 객체의 속성이나 기능이 상황에 따라 여러 형태를 가질 수 있다는 개념이다. 현실에 빗대어 비유하자면, 나라는 존재는 누군가의 자식이 될 수도, 누군가의 친구가 될 수도, 누군가의 아버지가 될 수도 있는 상황과 맥락에 따라 달라지는 것과 비슷하다고 할 수 있다. 이를 프로그래밍에 대입하면, 다형성이란 같은 자료형에 여러가지 타입의 데이터를 대입하여 다양한 결과를 얻어낼 수 있는 성질을 의미한다. 자바에선 대표적으로 Overloadi..

독백

[2023년 4월 22일] 지금까지의 독학은 어땠나

지금까지 독학은 어땠나 독학 초창기 독학의 시작은 대학교 겨울 방학 중 취미로 시작한 Python이었다. 백엔드부터 시작한 이유는 어렸을 적부터 게임 서버를 구축해서 운영한 적이 많았는데, 이때 백엔드를 알게모르게 경험했었다. 마인크래프트를 운영할 때는 Java를 사용해봤었고 다른 게임에서는 DB랑 클라우드?를 사용해본적이 있었기 때문에 이런 경험을 살려서 백엔드부터 제대로 공부해보고자 하였다. 아무튼 당시에 항상 같이 공부하던 친구가 있었는데, 내가 공부하는 Python을 보고 흥미를 느낀 뒤 준비하던 공기업을 내려놓고 국비학원을 등록하게 되었다. 그렇게 나 역시 점점 개발에 대한 흥미가 붙기 시작하였다. 21년도 1월에 Git이라는 것을 처음 사용해보게 되었고, 2월부터 제대로 Java를 공부하기 시..

데브코스

[2023년 5월 23일] 프로그래머스 데브코스 4기 합격 후기

데브코스와의 인연 우선 이번 4기 합격에 관한 이야기를 하기에 앞서 사실 나는 데브코스 재수생이다. 작년 9월, 우연히 데브코스 과정을 발견하게 되었고 데브코스에서 제공하는 커리큘럼과 학습 환경이 내가 원하는 방향과 딱 들어맞았다. 또한, 제일 진정성이 보이는 교육기관의 모습이었다. 다른 교육기관들은 비전공자 취업율이 어떻고 수료생 취업율이 어떠하며 유명 기업 강사가 몇명이고~ 이런 자극적인 글귀들만 내세우며 학생들의 성장을 원하는 것인지 학생들의 성장을 통한 자신들의 통계, 성과를 원하는 것인지 구분이 안가는 모습을 보였기 때문이다. 당시에는 이제 막 개발이란 분야에 걸음마를 떼기 시작한 단계여서 데브코스 과정에 대한 준비도 부족했고, 내가 어떠한 개발자가 되고 싶은지, 개발자가 되고난 후에는 무엇을 ..

weonest
나그네의 개발 노래