도커(Docker)란 소프트웨어 컨테이너화를 통해 애플리케이션을 더 쉽게 개발, 배포, 실행할 수 있게 해주는 오픈 소스 플랫폼이다. 컨테이너화 기술은 개발자가 코드와 그 코드의 모든 종속성을 함께 묶어 컨테이너(Container)로 배포할 수 있게 해주는 기술로, 간단하게 말하면 컨테이너를 생성하고 관리하기 위한 도구이다. Container? 컨...
Docker?

스프링 빈 / 스프링 컨테이너
앞선 게시글에서 스프링 프레임워크를 사용하면 객체를 직접 생성하고 관리하는 대신 스프링 빈으로만 등록하면 된다고 했었다. 그럼 스프링 빈이 무엇인지 알아보자. 자바 빈? 자바 빈은 자바 객체를 나타내기 위한 규약(Getter/Setter, 기본생성자 등)일 뿐이다. 스프링 빈과는 전혀 다른 개념이다. 스프링 빈이란 스프링 컨테이너가 관리하...

객체 지향 특징 / SOLID 원칙
앞선 게시물에서 의존주입을 사용하면 객체 지향 특징을 잘 지킬 수 있으며 쉽게 객체 지향 설계를 만족할 수 있다고 했다. 그럼 객체 지향의 특징과 객체 지향 설계 원칙에 대해 알아보자. 객체 지향 특징 캡슐화 객체의 데이터를 외부로부터 보호하고, 데이터 접근과 조작방법을 제한하는 기법이다. 즉, 외부의 무분별한 데이터 접근을 막는 방법으로 외부로...

스프링이란?
스프링이란? 스프링은 웹 개발에서 많이 사용하는 프레임워크로 웹 개발만을 위한 프레임워크라고 생각하기 쉬운데, 사실 스프링 프레임워크는 JAVA의 객체지향적 특성을 효과적으로 활용하도록 도와주는 프레임워크이다. 그럼 스프링은 어떤 방식을 사용하여 효과적으로 도와줄까? 그 방법에 대해 알아보자. IoC / DI 스프링은 객체지향 프로그래밍을 돕기...

테스트코드 (JUnit5)
테스트 코드를 작성하는 이유? 개발 과정에서 문제를 미리 발견할 수 있다. 리팩토링의 리스크가 줄어든다. 애플리케이션을 가동해서 직접 테스트하는 것보다 테스트를 빠르게 진행할 수 있다. 하나의 명세 문서로의 기능을 수행한다. 몇 가지 프레임워크에 맞춰 테스트 코드를 작성하면 좋은 코드를 생산할 수 있다. 코드가 작성된 목적을 ...

스프링 시큐리티를 이용한 이메일인증 추가하기
스프링 시큐리티는 여러 기능을 제공하는데 그 중 필터를 사용하여 2차 인증을 거친 후 로그인을 진행할 수 있다. 구현 인증코드 생성기 public class GenerateCode { public static String generate() { Random random = new Random(); String...

너비 우선 탐색(BFS) - JAVA
너비 우선 탐색 너비 우선 탐색은 영어로 BFS (Breadth First Search) 라 표현하며, 그래프를 탐색하는데 너비를 우선으로 하여 탐색한다는 뜻이다. BFS 탐색을 위해선 스택을 사용한 DFS와 달리 큐 라는 자료구조가 필요하다. 큐를 사용한 BFS 탐색 방법은 아래와 같다. BFS 순서 시작노드를 큐에 담는다. 큐에 넣은...

깊이 우선 탐색(DFS) - JAVA
깊이 우선 탐색 깊이 우선 탐색은 영어로 DFS (Depth First Search) 라 표현하며, 그래프를 탐색하는데 깊이를 우선으로 하여 탐색한다는 뜻이다. DFS 탐색을 위해선 스택이라는 자료구조가 필요하다. 스택을 사용한 DFS 탐색 방법은 아래와 같다. DFS 순서 시작노드를 스택에 담는다. 스택의 최상단(top)에 있는 노드를...
카카오톡이 트래픽에 대처하는 방법
유튜브에서 kakao tech 채널의 폭증하는 카카오톡 트래픽에 대처하는 방법 (신성열 Tomo) 라는 영상을 시청하고 카카오톡의 트래픽에 대한 생각을 정리해보았다. 카카오톡의 경우 백그라운드 로그인 카카오톡은 사용자 편의성을 위해 백그라운드 로그인이라는 기능을 사용한다고 한다. 백그라운드 로그인 기능이란 한 사용자가 다른 사용자에게 메시지를...
보안과 권한 관리
보안과 권한 관리 보안 데이터베이스의 보안은 3가지로 구분할 수 있다. 물리적 환경에 대한 보안 자연 재해처럼 물리적인 위험으로부터 보호한다. 권한 관리를 통한 보안 접근이 허용된 사용자만 부여된 권한 내에서 사용하도록 제한해야 한다. 운영 관리를 통한 보안 ...