본문 바로가기

전체 글109

Spring - REST API의 한계, GraphQL 하이브리드 아키텍처로 극복하기 (VisiDoc) 이전 ShopSphere 온라인 쇼핑몰 프로젝트를 진행하며 저는 Spring Boot 기반의 RESTful API를 중심으로 백엔드 시스템을 설계하고 개발했습니다. 상품, 주문, 회원 등 명확한 도메인을 자원(Resource)으로 정의하고 HTTP 메서드로 상태를 다루는 REST API는 매우 좋은 도구였습니다. 하지만 프로젝트의 기능이 많아지면서, 한 가지 고민이 생겼습니다. 바로 '데이터 비효율', 특히 오버페칭(Over-fetching) 문제였습니다. 예를 들어, 장바구니 목록 페이지에서는 각 상품의 판매자를 출력할 때, 판매자 이름이나 회사명만 필요한데, 판매자의 상세 정보를 모두 담고 있는 '판매자 전화번호', '판매자 id' 등 당장 필요 없는 데이터까지 클라이언트로 전송되는 비효율이 발생했.. 2025. 11. 4.
Spring - 공유 DB 데이터 무결성을 위한 Native SQL 활용 전략 (VisiDoc) https://github.com/ZaRi1l/3thproject-back GitHub - ZaRi1l/3thproject-back: 3번째 프로젝트3번째 프로젝트. Contribute to ZaRi1l/3thproject-back development by creating an account on GitHub.github.com 지난 포스팅에서는 두 개의 다른 데이터베이스를 연동하고, 특히 여러 팀이 함께 사용하는 Oracle DB의 데이터를 보호하기 위해 Multi-Datasource 아키텍처를 설계하고 구축하는 과정을 다뤘습니다. read-only 커넥션 설정과 패키지 분리를 통해 1차적인 안전장치를 마련했지만, 이것만으로는 충분하지 않습니다. 개발자의 작은 실수가 치명적인 결과로 이어질 수 있는 .. 2025. 10. 8.
Spring - Multi-Datasource 아키텍처 구축 (VisiDoc) https://github.com/ZaRi1l/3thproject-back GitHub - ZaRi1l/3thproject-back: 3번째 프로젝트3번째 프로젝트. Contribute to ZaRi1l/3thproject-back development by creating an account on GitHub.github.com 이번에 visidoc프로젝트를 진행하면서 2가지 요구사항이 있었습니다. 2개의 다른 DB 연결이 필요했습니다. (학교내 Oracle DB, 아마존 EC2의 PostgreSQL DB)여러 팀이 함께 사용하는 학교 공용 Oracle DB의 데이터는 절대 수정되거나 영향을 받아서는 안 됐습니다. 이 두 가지 과제를 해결하기 위해, 저는 Spring Boot 환경에서 Multi-Dat.. 2025. 10. 1.
Linux - 프로그램 설치 (rpm) [2022년 11월 26일 학습 기록]제 예전 블로그에 있던 내용을 이전한 포스트입니다. 이제 rpm에 대해 알아보자!!rpm(redhat package manager):패키지를 이용한 프로그램/서비스 관리 redhat 기반의 리눅스: rpm 명령어 사용debian 기반의 리눅스: dpkg 명령어 사용 형식명령어옵션패키지명설명rpm-ivh패키지명-버전.아키텍처.rpm설치rpm-qa설치된 패키지들 확인rpm-qa | grep패키지명(검색할 이름)설치된 패키지들 중에서 찾기rpm-e패키지명(-버전.아키텍처)삭제 우선 패키지의 파일 형식을 봐보자!!vim이라는 이름을 가지 패키지 파일을 검색했다.vim-common-7.4.629-7.el7.x86_64을 분석해보도록 하자!!vim-common7.4.629-7... 2025. 9. 30.
Linux - 압축, 설치 (zip, tar, yum) [2022년 11월 26일 학습 기록]제 예전 블로그에 있던 내용을 이전한 포스트입니다. 이번에는 리눅스에서의 프로그램 설치에 대해 정리해보자!!압축압축 명령어압축 해제 명령어압축 형식zipunzip.zipgzipgunzip (gzip -d).gzbzip2bunzip2 (bzip2 -d),bz2 리눅스에서의 압축방식은 크게 3가지가 존재하고 주로 'gzip'을 사용한다고 한다 ㅎㅎ그리고 윈도우랑 다른 점이 있다.1.디렉토리 압축불가.2.파일 동시에 압축불가 -> 개별 압축이됨.3.복사본 압축x -> 원본 압축 그러면 한번 써보자!!이때 대상의 이름을 확장자 까지 써야한다.잘 압축되는 것을 확인 할 수 있다. ㅎㅎtar-여러 파일을 하나의 파일로 묶어준다. 프로그램 소스파일들을 압축해서 보낼때 사용.명령어.. 2025. 9. 30.
Linux - 권한 (setUID, umask...) (3) [2022년 11월 20일 학습 기록]제 예전 블로그에 있던 내용을 이전한 포스트입니다. 이제 권한 마지막이다 ㅎㅎ권한(1)에서 설명을 안한 특수권한과 umask에 대해 정리해보겠다!특수 권한s,S,t,T 이걸 어떤 파일에서 볼수 있냐면. 흠...ll /bin/passwd보면 owner 칸에 rws 가 보일것이다. 이것이 바로 특수 권한이다! 특수권한은 크게 3가지로 나누어진다.특수권한허가권 문자허가권 숫자setUIDrws rwx rwx4777setGIDrwx rws rwx2777sticky bitrwx rwx rwt1777각각의 특수권한을 봐보자!setUID파일이 실행하는 동안 사용자에게 Owner의 권한을 줌. stickybit-디렉토리에 설정-해당 디렉토리 내부에서 디렉토리나 파일을 만드는 것은 가.. 2025. 9. 30.
Linux - 권한 (소유권, chown) (2) [2022년 11월 20일 학습 기록]제 예전 블로그에 있던 내용을 이전한 포스트입니다. 저번 시간 허가권에 이어서 소유권에 대해 알아보고 적용되는 방식을 정리해보자!!소유권소유권도 ls -l을 통해 확인이 가능하다.root root 부분이다.앞에 root뒤에 rootUID 소유자 계정명GID 소유하는 그룹 그룹명 소유권도 허가권과 마찬가지로 변경이 가능하다 ㅎㅎ 명령어(옵션) 권한값대상 (대상) ... (대상)설명chownUID파일 or 디렉토리명소유권 UID 변경chownUID:GID or UID.GID파일 or 디렉토리명소유권 UID, GID 변경chownUID: or UID.파일 or 디렉토리명소유권 UID 변경, 그 UID 사용자의 GID로 지정chown:GID or .GID파일 or 디렉토리명.. 2025. 9. 30.
Linux - 권한 (1) [2022년 11월 20일 학습 기록]제 예전 블로그에 있던 내용을 이전한 포스트입니다. 오늘도 리눅스를 정리해보자!!리눅스에 있는 권한에 대해 알아보겠다.권한 : 파일이나 디렉토리를 사용할 수 있는지 정하는 것권한허가권소유권 권한은 크게 허가권과 소유권으로 나뉘어져있다 ㅎㅎ먼저는 허가권에 대해서 알아보자!!허가권허가권은 ls -l 명령어를 통해 확인할 수 있다. 그러면 파일 앞에 drwxr-xr-x. 이런 문자들이 보일 것이다.여기서 rwxr-xr-x가 허가권을 표현해준것이다.총 9홉글자로 구성되어있다.먼저 문자의 종류를 살펴보자면 ㅎㅎ.일반 권한 표현 문자설명숫자로 표현r파일 읽기: cat, head, vi, less 등의 명령어로 열람가능디렉토리 내부 확인:ls 명령어4w파일 수정하기디렉토리 내부 .. 2025. 9. 30.