목록분류 전체보기 (198)
밤빵's 개발일지
🤓서버 보안지금까지 두 번의 프로젝트를 진행했지만, 아직 서버 보안에 대해 깊이 있게 고민해 본 적이 없었다. 이번 기회를 통해 서버 보안의 기초 개념을 공부하고, 프로젝트에서 실제로 적용할 수 있는 방법들을 정리해 보기로 했다. 서버 보안은 해킹과 같은 외부 공격으로부터 애플리케이션과 데이터를 보호하는 매우 중요한 부분이다. 보안의 기본 원칙을 이해하고 실천하는 것은 서버 안정성과 신뢰성을 높이는 핵심적인 요소이다😆 ▶ 서버 보안의 중요성서버 보안은 서버와 그 위에 운영되는 애플리케이션을 외부의 위협으로부터 보호하기 위한 여러 가지 방어 기법과 원칙을 말한다. 서버 보안이 제대로 구축되지 않으면, 데이터 유출, 서비스 중단, 악성 코드 감염 등 심각한 문제를 초래할 수 있다. 특히 개인정보나 금융 ..
🤓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)에 대해 알게 되었다. 싱글턴 패턴은 객체지향 프로그래밍에서 자주 사용하는 패턴 중 하나인데, 이번 개발일지를 통해 싱글턴 패턴이 무엇인지, 어떤 상황에서 사용되는지, 그리고 어떻게 구현하는지에 대해 정리하려 한다! ▶ 싱글턴 패턴이란?싱글턴 패턴은 하나의 클래스에 대해 단 하나의 객체만 생성되도록 보장하는 디자인 패턴이다. 프로그램이 실행되는 동안 해당 클래스의 인스턴스가 딱 하나만 존재해야 할 때 사용된다. 이는 주로 애플리케이션 전체에서 공유되는 리소스를 관리할 때 사용된다. 싱글턴 패턴을 적용하면, 여러 곳에서 해당 객체를 생성하려 해도 동일한 인스턴스를 반환하게 되어 시스템 자원..
포트원을 연동한 결제 시스템을 구현하면서, 흐름을 분석하고 몇 가지 보완해야 할 점을 알게됐다. 결제는 사용자가 직접적으로 자금과 관련된 매우 중요한 기능이고, 흐름의 안정성과 보안성, 그리고 사용자 측면에서 추가적인 보완이 필요하다. (결제 기능한다고 열심히 알아보던 동시성이슈나 락개념, 멱등성같은건 추가 할 엄두도 못내는 중...) ▶ 결제 실패에 대한 대응현재 결제 성공에 대한 흐름은 잘 정의되어 있지만, 결제 실패 또는 예외 상황에 대한 처리가 조금 미흡하다. 결제 실패는 다양한 이유(카드 승인 거절, 네트워크 문제, 사용자 취소 등)로 발생할 수 있기때문에, 실패 시에도 명확한 처리와 사용자 안내가 필요하다. ▷ 개선 사항:→ 결제 실패 처리 로직 강화:결제 실패 시 어떤 조치를 취할 것인지 명..
😟포트원(Port One) 결제 연동 흐름포트원(Port One)을 통해 결제 기능을 구현하게 되었고. 처음에는 결제 프로세스가 어떻게 이루어지는지 감을 잡질못해서 매일매일 문서를 보거나 리서치만 하고 소위 말하는 삽질만하다가 프론트 짝꿍과 결제에 대해 소통을하면서 그 흐름을 잡아가는 중이다..! ▶ 포트원 결제 연동 흐름1. 백엔드에서 API를 통해 결제 데이터를 클라이언트로 전송결제 프로세스는 백엔드에서 클라이언트로 결제 관련 데이터를 전송하는 것으로 시작된다. 이때, 전송하는 데이터에는 결제를 위해 필요한 각종 정보가 포함되고, 클라이언트는 이 정보를 바탕으로 결제를 요청하게 된다.EstimateAndCommissionResponseDto 클래스가 그 예시가 될 수 있다. 이 클래스는 클라이언트에..
🤓JSON 직렬화/역직렬화JSON 데이터를 다루는 과정에서 직렬화와 역직렬화에 대한 문제가 생겼다. 직렬화와 역직렬화는 데이터를 다른 형식으로 변환하고, 다시 원래 형태로 복원하는 과정인데, 이 과정에서 발생한 문제를 해결하고 이해하기 위해 이번 개발일지를 작성하게 되었다! ▶ JSON 직렬화와 역직렬화란?먼저, 직렬화(Serialization)는 자바 객체를 JSON 형식으로 변환하는 과정이다. 이 과정은 데이터를 네트워크를 통해 전송하거나, 파일로 저장할 때 매우 유용하다. 반면, 역직렬화(Deserialization)는 JSON 데이터를 다시 자바 객체로 변환하는 과정이다. 서버나 클라이언트 간에 데이터를 주고받을 때, JSON을 자바 객체로 변환하여 실제로 사용할 수 있게 한다.내가 직면한 문제..
🤓Gradle과 Maven의 차이점나는 Spring Boot와 Gradle을 사용하면서 빌드 하고 있다. Gradle은 내가 프로젝트에서 사용하고 있는 빌드 도구지만, Maven이라는 또 다른 빌드 도구도 있다. 두 도구는 자바에서 사용되지만, 구체적으로 어떤 차이점이 있는지 잘 모른다. 이번 기회를 통해 Gradle과 Maven의 차이점을 공부해보고자 한다. ▶ Gradle과 Maven이란?Gradle과 Maven은 모두 자바 프로젝트에서 의존성 관리와 빌드를 자동화하는 도구이다. 개발자가 프로젝트에서 사용해야 하는 라이브러리를 쉽게 추가하고, 코드를 컴파일하고 패키징하는 과정을 자동화할 수 있도록 도와준다. → Maven:XML 기반의 프로젝트 관리 도구로, 빌드 및 의존성 관리를 자동화하는 기능을..