main

java

[Java] AES256 암호화 Util

오늘은 프로젝트 하면서 AES256 Util을 작성했던 내용을 정리해보려고 한다. 우리 프로젝트에는 익명 게시판이 있었는데, 프론트로 response를 보낼 때 사용자의 Id(DB상의 Id)가 노출되지 않도록 이를 암호화해서 보내기로 했다. 프론트에서 이후에 다른 요청을 보낼 때 이 암호화된 Id를 다시 request로 사용하므로, 백엔드 서버에서는 해당 Id를 복호화할 수 있어야 했다. 그래서 우리는 양방향 암호화를 선택했고, 암호화와 복호화 모두 백엔드 서버에서 이루어지므로 대칭키를 사용하는 AES-256 알고리즘을 사용하기로 했다. 또한, 우리는 익명 게시판에서 특정 사용자가 여러 개의 게시글을 작성했을 경우, 프론트단에서 동일한 사용자가 작성한 게시글임을 알 수 없도록 할 필요가 있었다. 마지막으..

network

프록시 서버란?

프록시 서버란 무엇일까? 여기저기서 주워듣긴 했는데 정확히 무슨 역할을 하는지 궁금했었다! 그래서 오늘은 프록시 서버에 대해서 정리해보려고 한다 🥸 프록시 서버란? 프록시 서버(proxy server)는 클라이언트가 자신을 거쳐 다른 네트워크에 접속할 수 있도록 중간에서 대리해주는 서버를 말한다. (클라이언트와 서버 사이에서 통신을 대리로 수행하는 행위 자체를 프록시라고 한다.) 프록시 서버는 네트워크 상 어디에 위치하느냐, 혹은 어느 방향으로 데이터를 제공하느냐에 따라 크게 포워드 프록시 서버(forward proxy server)와 리버스 프록시 서버(reverse proxy server)로 나뉜다. 포워드 프록시 서버 우리가 흔히 말하는 프록시 서버는 포워드 프록시 서버를 의미한다. 클라이언트에서 ..

aws

AWS RDS, Aurora, Aurora Serverless 비교

RDS AWS RDS AWS에서 제공하는 관계형 데이터베이스 서비스이다. RDS 내에서 데이터베이스 플랫폼은 EC2에서 수동으로 수행하는 것처럼 구축된다. EC2 인스턴스는 적절한 AMI에서 프로비저닝되고, EBS 스토리지는 프로비저닝된 인스턴스에 연결된다. 그리고 적절한 서브넷 그룹과 보안 그룹이 인스턴스에 연결되는 구조이다. 프로비저닝되면 RDS는 백업/복원 및 패치가 모두 자동으로 처리되어 플랫폼 유지관리가 자동으로 이루어진다. AWS RDS MySQL의 특징 트랜잭션 로그 및 데이터베이스 데이터 파일은 로컬 EBS 스토리지 볼륨 사용 데이터베이스의 모든 커밋된 트랜잭션 I/O는 WAL(Write-Ahead Log)라고 하는 전후 이미지가 있는 로그 레코드를 생성한 후 지속가능한 스토리지로 저장 체..

test

[이펙티브 소프트웨어 테스팅] CHAPTER 2 - 명세 기반 테스트

명세 기반 테스트 기법은 프로그램의 요구사항 자체에서 테스트를 도출하는 것으로, 개발자가 기능 개발을 마치고 테스트를 시작할 때 가장 먼저 접근하기 좋은 기법이다. 이번 장에서는 명세 기반 테스트 기법을 적용해 테스트 케이스를 작성하는 방법을 다룬다. 요구사항에서 테스트 케이스 뽑아내기 요구사항과 입출력에 대해 이해하기 무엇을 수행해야 하는지 확인 입력값 확인 출력값 확인 여러 입력값에 대해 프로그램이 수행하는 바를 탐색하기 직접 작성하지 않은 코드인 경우 더욱 필요한 단계이다. 테스트 가능한 입출력과 구획을 탐색하기 각 입력 매개변수의 가능한 케이스(=구획) 찾기 입력 매개변수들의 가능한 조합 찾기 출력값의 가능한 케이스 찾기 (전체 출력, 각 개별 출력 모두 확인하기!) 예를 들면, 문자열 배열을 출..

springboot

[SpringBoot] Custom Validator 사용하기

오늘은 Custom Validator 사용 방법을 정리해보려고 한다! 사이드 프로젝트를 진행하면서 spring validation 라이브러리에서 지원해주지 않는 유효성 검증이 필요한 상황이 있었다. (( 상황 설명을 잠깐 해보자면,, 게시글 내용을 @Size를 사용해서 최대 3000자까지 입력할 수 있도록 제한해 두었는데, 줄바꿈이 CRLF로 들어와서 문자열 길이가 2로 잡히는 문제가 있었다. (포스트맨으로 요청을 보내면 LF로 오는 것 같은데, 프론트에서 요청을 보내면 CRLF로 들어오는 것 같았다🤔) 그래서 팀원들과 논의해본 후.. Custom Validator로 "\r"(CR)을 ""로 바꾸고 문자열 길이를 검증하기로 했다. 뭔가 Custom Validator를 사용하는 것보다 더 좋은 방법이 있었..

test

[이펙티브 소프트웨어 테스팅] CHAPTER 1

이펙티브 소프트웨어 테스팅 책 스터디를 시작했다 🙌🏻 매주 한 챕터씩 읽으면서 내용 정리를 할 예정인데, 읽으면서 느낀 점들이랑 새롭게 알게된 개념들도 함께 정리해보려고 한다 ㅎ.ㅎ 그럼 1주차 시작-! 테스트가 왜 필요한가? 우리는 사람이기 때문에 실수를 할 수 있고, 형편없는 프로그래머라서가 아니라 복잡한 사항을 프로그래밍하고 있기 때문에 버그가 생길 수 있다. 직감을 따르는 몇몇 수동 테스트만 수행하는 것은 코너 케이스를 빼먹을 확률이 높고, 배포가 진행된 이후 다른 사람으로부터 오류를 보고받아 다시 고치게 될 확률이 높다. 따라서 우리는 (1) 체계적인 접근법을 사용해 테스트 케이스를 도출하고, (2) 테스트 자동화를 적용해 시간을 절약할 수 있다. 효율적이고 체계적인 테스트 효율적: 올바른 테스..

aws

AWS Lambda + DynamoDB + API Gateway 구축하기

오늘은 AWS Lambda + DynamoDB + API Gateway 환경을 세팅해 간단하게 Lambda 함수로 DynamoDB에 접근하는 실습을 해보려고 한다. 시작하기 전에 간단하게! DynamoDB: 완전관리형 NoSQL Database Lambda: 서버리스 컴퓨팅 플랫폼 API Gateway: REST 및 WebSocket API를 생성, 게시, 유지, 모니터링 및 보호하기 위한 AWS 서비스 1. DynamoDB 생성 DynamoDB 탭에 들어가서 테이블 생성을 해준다. 지금은 간단하게 실습만 해볼거라서 테이블 이름과 파티션 키 이름만 적어주고 생성해준다! (나머지는 기본값 그대로!) DynamoDB에서는 2가지의 기본키를 지원하는데, 하나는 파티션키이고 다른 하나는 파티션키+정렬키이다. 파..

aws

AWS EC2 Auto Scaling & Elastic Load Balancing

📌 AWS Auto Scaling 이란? Auto Scaling은 크기 조정 가능한 AWS 리소스에 대한 자동 크기 조정을 제어할 수 있게 해주는 서비스이다. 리소스의 개수를 늘리거나 줄이는 Scale In & Out 방식의 크기 조정을 지원한다. 우리는 이 중에서 제일 친숙한 EC2 Auto Scaling에 대해 알아보려고 한다. EC2 Auto Scaling의 구성요소는 다음과 같다. Auto Scaling Groups (그룹) 자동 크기 조정 및 관리를 위한 논리적인 EC2 인스턴스 그룹이다. Launch Templates (시작 템플릿) Auto Scaling에서 인스턴스를 시작하는데 사용하는 템플릿이다. 똑같은 환경의 인스턴스를 복제하기 위함이다. Launch Configurations (조정 ..

norgb
'분류 전체보기' 카테고리의 글 목록