728x90
반응형
SMALL

2024/02 41

[Apache Kafka] 카프카(Kafka) 맛보기!

카프카(Kafka)란?! Apache Kafka는 실시간으로 기록 스트림을 게시, 구독, 저장 및 처리할 수 있는 오픈 소스 분산 이벤트 스트리밍 플랫폼입니다. 여러 소스에서 데이터 스트림을 처리하고 여러 사용자에게 전달하도록 설계되었습니다. 간단히 말해 A지점에서 B지점까지 이동하는 것뿐만 아니라 A지점에서 Z지점을 비롯해 필요한 모든 곳에서 대규모 데이터를 동시에 이동할 수 있습니다. 카프카의 탄생 배경 카프카는 비즈니스 소셜 네트워크 서비스인 링크드인(linked-in)에서 개발했으며 아래는 카프카 개발 전 링크드인의 데이터 처리 시스템입니다. 각 애플리케이션과 DB가 end-to-end 로 연결되어 있고 요구사항이 늘어남에 따라 데이터 시스템 복잡도가 높아지면서 다음과 같은 문제가 발생하게 되었습..

개발지식 2024.02.29

MSA(MicroService Architecture) 란 무엇일까?!

MSA 란 MicroService Architecture의 줄임말로 작고 독립적으로 배포가 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크라고 할 수 있습니다. 마이크로 서비스는 완전히 독립적으로 배포가 가능하고, 다른 기술 스택(개발언어, 데이터베이스 등)이 사용 가능한 단일 사업 영역에 초점을 둡니다. MSA의 등장 배경 모놀리식 아키텍처(Monolithic Architecture)는 전통적인 개발 방식으로 하나의 프로젝트에 모든 기능을 함께 포함하는 아키텍처입니다. 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태로 웹 개발을 예로 들면 웹 프로그램을 개발하기 위해 모듈별로 개발을 하고, 개발이 완료된 웹 어플리케이션을 하나의 결과물로 패키징하여 배포되는 형태를 말합니다. 주로 ..

개발지식 2024.02.28

MVC(Model-View-Controller) 패턴의 정의와 처리과정!

MVC 패턴이란 모델-뷰-컨트롤러(model–view–controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다. ● Model Model은 소프트웨어나 애플리케이션에서 정보 및 데이터 부분을 의미합니다. 이는 Controller에게 받은 데이터를 조작(가공)하는 역할을 수..

개발지식 2024.02.27

EAI(Enterprise Application Integration)이란?

EAI란 Enterprise Application Integration 의 약자로 기업과 기업 내부의 다양한 시스템과 애플리케이션 간에 상호 연동이 가능하도록 통합하는 솔루션을 말합니다. 한 기업 내의 ERP(전사적자원관리), CRM(고객관계관리), SCP(공급망계획) 시스템이나 인트라넷 등의 시스템 간에는 서로 데이터를 주고 받아야할 상황이 생깁니다. 데이터를 주고받기 위해 각 시스템 간에 개별적으로 서로 통신을 한다면 시스템 간에 개별적인 연결이 상당히 많이 생성되면서 유지보수의 어려움이 발생하고 운영체제가 다르다거나 하는 이유로 시스템 간 통신을 위해 시스템을 고쳐야 하는 상황이 발생할 수 있습니다. 이러한 문제점을 해결하기 위해 EAI 라는 솔루션을 적용하고 있습니다. 위 그림처럼 각 시스템은 E..

개발지식 2024.02.24

싱글톤 패턴(Singleton Pattern)이란

예전 기술 면접을 볼 때 싱글톤 패턴 관련해서 질문을 받았었습니다 ㅎㅎ 공부 중 이전 면접 기억이 나서 한번 정리해보겠습니다! 싱글톤 패턴이란 어떤 클래스가 최초 한 번만 메모리를 할당(static)하고 해당 메모리에 인스턴스를 만들어 사용하는 패턴 즉, 싱글톤 패턴은 '하나'의 인스턴스만 생성하여 사용하는 디자인 패턴입니다. 쉽게 말하자면 메모리 절약을 위해, 인스턴스가 필요할 때 똑같은 인스턴스를 새로 만들지 않고 기존의 인스턴스를 가져와 활용하는 기법입니다! 왜 사용하나요 객체는 생성할 때마다 메모리 영역을 새로 할당 받아야 합니다. 동일한 객체를 사용해야하는 경우 선언된 객체를 호출할 때마다 객체가 새로 생성이 되는데 만약 트래픽이 초당 100이 나오면 초당 100개의 객체가 생성되고 소멸되며 이..

개발지식 2024.02.23

프로그래머스) 주사위 게임 3 Lv0

문제 설명 1부터 6까지 숫자가 적힌 주사위가 네 개 있습니다. 네 주사위를 굴렸을 때 나온 숫자에 따라 다음과 같은 점수를 얻습니다. 네 주사위에서 나온 숫자가 모두 p로 같다면 1111 × p점을 얻습니다. 세 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q(p ≠ q)라면 (10 × p + q)2 점을 얻습니다. 주사위가 두 개씩 같은 값이 나오고, 나온 숫자를 각각 p, q(p ≠ q)라고 한다면 (p + q) × |p - q|점을 얻습니다. 어느 두 주사위에서 나온 숫자가 p로 같고 나머지 두 주사위에서 나온 숫자가 각각 p와 다른 q, r(q ≠ r)이라면 q × r점을 얻습니다. 네 주사위에 적힌 숫자가 모두 다르다면 나온 숫자 중 가장 작은 숫자 만큼의 점수를 얻습..

코딩 테스트 2024.02.17

프로그래머스) 바탕화면 정리 Lv1

문제 설명 코딩테스트를 준비하는 머쓱이는 프로그래머스에서 문제를 풀고 나중에 다시 코드를 보면서 공부하려고 작성한 코드를 컴퓨터 바탕화면에 아무 위치에나 저장해 둡니다. 저장한 코드가 많아지면서 머쓱이는 본인의 컴퓨터 바탕화면이 너무 지저분하다고 생각했습니다. 프로그래머스에서 작성했던 코드는 그 문제에 가서 다시 볼 수 있기 때문에 저장해 둔 파일들을 전부 삭제하기로 했습니다. 컴퓨터 바탕화면은 각 칸이 정사각형인 격자판입니다. 이때 컴퓨터 바탕화면의 상태를 나타낸 문자열 배열 wallpaper가 주어집니다. 파일들은 바탕화면의 격자칸에 위치하고 바탕화면의 격자점들은 바탕화면의 가장 왼쪽 위를 (0, 0)으로 시작해 (세로 좌표, 가로 좌표)로 표현합니다. 빈칸은 ".", 파일이 있는 칸은 "#"의 값을..

코딩 테스트 2024.02.16

프로그래머스) 문자열 나누기 Lv1

문제 설명 문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다. 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다. s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다. 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다. 문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solution을 완성하세요. ..

코딩 테스트 2024.02.16

[SPRING] DI(Dependency Injection) 의존관계 주입 2탄!

DI 를 공부하던 중 깨달음을 얻고 더 적절한 예시와 설명을 하기위해서 추가로 작성해봅니다 ㅎㅎ DI, 의존관계 주입이란 Dependency Injection은 의존성 주입이라고도 하며, 객체 간의 의존성을 외부에서 주입하여 결합도를 낮추고 유연한 코드를 작성하는 방법입니다. 말 그대로 메서드 안에 파라미터값을 통해 필요한 메서드나 데이터들을 추가하여 사용하는 것으로 이해하면 편합니다! 바로 예시를 들어가보겠습니다 우선 DI를 사용하지 않는 경우입니다 public class UserServiceImpl implements UserService { private UserRepository userRepository = new UserRepositoryImpl(); public void addUser(Use..

개발지식 2024.02.15

프로그래머스) 숫자 짝꿍 Lv1

문제 두 정수 X, Y의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). X, Y의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다. X, Y의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0입니다. 예를 들어, X = 3403이고 Y = 13203이라면, X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 3, 0, 3으로 만들 수 있는 가장 큰 정수인 330입니다. 다른 예시로 X = 5525이고 Y = 1255이면 X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 2, 5, 5로 만들 수 있는 가장 큰 정수인 552입니다(X에는 5가 3개, Y에는 5가 2개..

코딩 테스트 2024.02.15
728x90
반응형
LIST