목록개발Article (143)
밤빵's 개발일지

H2 데이터베이스 사용법개발을 하게되면 여러 가지 데이터베이스(DB)를 다룰 필요가 있다. 특히 로컬에서 애플리케이션을 개발하고 테스트할 때는 경량화된 인메모리(In-Memory) 데이터베이스가 유용한데, 그 중에서 H2 데이터베이스라는 걸 알게되면서, 이번 개발일지를 통해 H2 데이터베이스의 개념과 설정 방법, 그리고 실제 사용 예시를 만들어봤다. ▶H2 데이터베이스란?H2 데이터베이스는 경량화된 오픈 소스 관계형 데이터베이스로, 인메모리 방식과 디스크 저장 방식을 모두 지원한다. 데이터베이스 데이터를 메모리에만 저장하거나, 파일로 저장할 수 있다. H2는 JDBC API를 통해 쉽게 접근할 수 있고, Spring Boot 같은 프레임워크에서 테스트용 데이터베이스로 자주 사용된다. 주요 특징은 다음과..

클린 코드(Clean Code)는 개발자들이 읽기 쉽고, 유지보수 가능한 코드를 작성하는 데 도움을 주는 일련의 원칙과 기법을 의미한다. 이를 통해 코드를 처음 접하는 다른 개발자도 쉽게 이해하고 확장할 수 있고, 코드 수정 시 오류 발생 가능성을 최소화할 수 있다. 클린 코드는 읽기 쉽고, 이해하기 쉬운 코드를 의미하며, 나 자신뿐만 아니라 다른 개발자들도 쉽게 이해하고 유지보수할 수 있는 코드를 작성하는 것을 목표로 한다. ▶ 클린 코드란?클린 코드(Clean Code)란, 이해하기 쉽고, 명확하며, 중복을 최소화한 코드를 말한다. 클린 코드는 단순히 컴파일러가 에러 없이 실행할 수 있는 코드가 아닌, 사람이 읽기 쉬운 코드를 지향한다. 코드의 가독성을 높이고 유지보수를 쉽게 하며, 더 적은 버그를 ..

▶ API Rate Limiting이란?API Rate Limiting은 클라이언트가 API에 보낼 수 있는 요청 횟수를 제한하는 기술이다. API는 여러 클라이언트로부터 요청을 받으며, 트래픽이 과도해지면 서버에 부하가 걸려 성능이 저하되거나 다운될 위험이 있다. 이를 방지하고 서버 성능을 보호하기 위해 일정 시간 내에 클라이언트가 보낼 수 있는 요청 수를 제한하는 것이 Rate Limiting의 목적이다. 예를 들어, 특정 API가 1분에 100번의 요청만 허용한다고 설정하면, 클라이언트가 그 이상 요청을 보낼 경우 해당 클라이언트는 일정 시간이 지나기 전까지 추가적인 요청을 처리받지 못하게 된다. ▶API Rate Limiting이 필요한 이유Rate Limiting은 API의 안정성과 성능을 보장..

🤓SQL과 NoSQL 데이터베이스백엔드 개발자로서 데이터베이스 선택은 애플리케이션의 성능과 확장성, 유지보수성에 큰 영향을 미치기 때문에, 두 가지 데이터베이스 시스템의 차이를 정확히 이해하는 것은 중요하다. 나는 이번 기회를 통해 관계형 데이터베이스(SQL)와 비관계형 데이터베이스(NoSQL)의 차이와 각각의 사용 사례에 대해 정리해보기로 했다! ▶ SQL이란?SQL(Structured Query Language)은 관계형 데이터베이스 관리 시스템(RDBMS, Relational Database Management System)에서 데이터를 관리하기 위해 사용되는 언어이다. 관계형 데이터베이스는 데이터를 행(row)과 열(column)로 이루어진 테이블 형태로 저장하고, 이 테이블들은 서로 관계를 ..

나는 결제 기능을 구현하는 과정에서 리플렉션(Reflection)이라는 기능을 처음 접하게 되었다. 리플렉션은 단순히 필드나 메서드에 강제로 접근하는 것 외에도 여러 가지 용도로 사용되고, 주로 동적 프로그래밍을 지원하기 위한 도구로 클래스의 구조를 실행 시간에 동적으로 조사하거나 조작할 수 있다. 이번 개발일지에서는 리플렉션을 통해 어노테이션, 클래스 정보, 생성자, 메서드, 필드 등을 다루는 다양한 사용 예와 그 의미를 정리해 보았다. ▶ 어노테이션(Annotations) 처리리플렉션은 어노테이션을 동적으로 확인하고 처리하는 데에도 자주 사용된다. 어노테이션은 자바에서 메타데이터를 제공하는 방식으로, 리플렉션을 통해 클래스, 메서드, 필드에 붙어 있는 어노테이션을 실행 중에 읽어와 그 정보를 기반으로..

프로젝트를 시작하면서, 서버와 클라이언트 간에 데이터를 주고받는 방법에 대해 고민하게 되었다. 그 과정에서 REST와 SOAP라는 용어를 접하게 되었는데, REST는 익숙했지만 SOAP는 처음 들어보는 개념이었다. 그래서 이번 개발일지를 통해 REST와 SOAP의 차이점과 장단점을 공부하고 정리해보기로 했다! ▶ REST?REST(Representational State Transfer)는 웹 기반의 분산 시스템을 위한 아키텍처 스타일이다. REST는 HTTP 프로토콜을 사용하여 데이터를 주고받는 방식을 정의하고, 웹의 리소스를 URI로 표현하면서, HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 리소스를 관리한다. REST API는 클라이언트-서버 구조를 따르고, 상태를 서버에..

TCP와 UDP라는 용어를 접하게 되면서, 이 두 용어는 인터넷 통신 프로토콜에서 매우 중요한 역할을 한다고 알게됐지만, 그래도 제대로 된 이해를 한 건 아니니까...이번 개발일지를 통해 TCP와 UDP의 차이점과 각각의 장단점을 알아보고, 나중에 네트워크 관련 개발을 할 때 도움이 될 수 있도록 정리해보려고 한다! ▶TCP와 UDP?TCP와 UDP는 모두 전송 계층에서 사용하는 프로토콜이다. 전송 계층은 네트워크에서 데이터를 송수신할 때 필요한 규칙과 절차를 정의하는 중요한 계층이다. 이 두 프로토콜은 데이터가 컴퓨터 간에 어떻게 전달되고, 어떤 방식으로 연결이 이루어지는지를 결정한다. 자주 사용되는 용도는 비슷하지만, 동작 방식에 있어 중요한 차이가 있다. → TCP (Transmission Con..

🤓싱글턴(Singleton)에 대해 알아보기최근 디자인 패턴 중 하나인 싱글턴 패턴(Singleton Pattern)에 대해 알게 되었다. 싱글턴 패턴은 객체지향 프로그래밍에서 자주 사용하는 패턴 중 하나인데, 이번 개발일지를 통해 싱글턴 패턴이 무엇인지, 어떤 상황에서 사용되는지, 그리고 어떻게 구현하는지에 대해 정리하려 한다! ▶ 싱글턴 패턴이란?싱글턴 패턴은 하나의 클래스에 대해 단 하나의 객체만 생성되도록 보장하는 디자인 패턴이다. 프로그램이 실행되는 동안 해당 클래스의 인스턴스가 딱 하나만 존재해야 할 때 사용된다. 이는 주로 애플리케이션 전체에서 공유되는 리소스를 관리할 때 사용된다. 싱글턴 패턴을 적용하면, 여러 곳에서 해당 객체를 생성하려 해도 동일한 인스턴스를 반환하게 되어 시스템 자원..

포트원을 연동한 결제 시스템을 구현하면서, 흐름을 분석하고 몇 가지 보완해야 할 점을 알게됐다. 결제는 사용자가 직접적으로 자금과 관련된 매우 중요한 기능이고, 흐름의 안정성과 보안성, 그리고 사용자 측면에서 추가적인 보완이 필요하다. (결제 기능한다고 열심히 알아보던 동시성이슈나 락개념, 멱등성같은건 추가 할 엄두도 못내는 중...) ▶ 결제 실패에 대한 대응현재 결제 성공에 대한 흐름은 잘 정의되어 있지만, 결제 실패 또는 예외 상황에 대한 처리가 조금 미흡하다. 결제 실패는 다양한 이유(카드 승인 거절, 네트워크 문제, 사용자 취소 등)로 발생할 수 있기때문에, 실패 시에도 명확한 처리와 사용자 안내가 필요하다. ▷ 개선 사항:→ 결제 실패 처리 로직 강화:결제 실패 시 어떤 조치를 취할 것인지 명..

🤓JSON 직렬화/역직렬화JSON 데이터를 다루는 과정에서 직렬화와 역직렬화에 대한 문제가 생겼다. 직렬화와 역직렬화는 데이터를 다른 형식으로 변환하고, 다시 원래 형태로 복원하는 과정인데, 이 과정에서 발생한 문제를 해결하고 이해하기 위해 이번 개발일지를 작성하게 되었다! ▶ JSON 직렬화와 역직렬화란?먼저, 직렬화(Serialization)는 자바 객체를 JSON 형식으로 변환하는 과정이다. 이 과정은 데이터를 네트워크를 통해 전송하거나, 파일로 저장할 때 매우 유용하다. 반면, 역직렬화(Deserialization)는 JSON 데이터를 다시 자바 객체로 변환하는 과정이다. 서버나 클라이언트 간에 데이터를 주고받을 때, JSON을 자바 객체로 변환하여 실제로 사용할 수 있게 한다.내가 직면한 문제..