전체 글

2023년에 변경하기 귀찮아서 벌써부터 26세라고 소개하는 26세 김동헌
PROGRAMMING/Flutter

Flutter Quiz App Architecture 고찰

왜 Flutter를 다시 기초부터 보게되었는가 옛날에 Dr. Angela yu가 강의하는 flutter 강의를 들은 적이 있습니다. 그 때에는 29시간의 시간동안 단순히 앱을 제작하기 위해 강의를 수강했던 것이라면, 이번에는 다시 마음먹고 강의를 하나 더 구매하여 아키텍처에 대해 고민해보기로 했습니다. 이전에는 StatefulWidget을 여러 군데 사용하며 상태를 남발하기도 했고, 위젯을 가능한 계속 분리하여 상태 관리를 하기도 했습니다. 그러다 보니 가장 큰 문제점이 무엇이었냐면, 새로운 개발자와 만나게 되었을 때 나의 코드를 이해시킬 수 없다는 것입니다. 계산기 앱을 제작한다고 했을 때 숫자마다 고유의 위젯으로 되어있고, 그 숫자를 클릭했을 때 main에서 값이 저장되어야 한다는 구조를 생각해보면,..

PROGRAMMING/Spring cloud

Spring Cloud 02.2 - Kafka 실습

🙆🏻 개발 Kafka는 메시지 큐를 제공하면서 정말 많은 서비스를 구축해낼 수 있지만, 인터넷에 올라와 있는 여러가지 예시를 보다보면 문득 그냥 이 정도만 구축할 수 있는거 아냐? 라고 생각이 들곤 한다. 예를 들어, Producer와 Consumer만 제작하고 서로 String 파라미터 형태의 채팅 기능, 단순 greeting하는 프로그램 실습 등이 있다. 이를 잘못되었다고 비판하는 것은 아니지만, 필자는 정말 그런 예시들을 보며 어떻게 마이크로서비스의 메시지 큐로 잘 활용할 수 있을까 하는 여러 의문이 들었다. 차라리 그런거라면 다른 주소로 다이렉트 요청하면 되지 왜 굳이 메시지 큐를 사용해서 채팅을 구현할까 하는 의문같은 것 말이다. 그러나 이번 git에 업로드 되어 있는 다음 프로젝트를 직접 분석..

PROGRAMMING/Spring cloud

Spring cloud 02.1 - Kafka

💁🏻 Kafka 카프카는 링크드인에서 제작한 메시지 지향 미들웨어이다. 풀어서 이야기 하면, 어플리케이션 사이에서 서로 연결시켜 데이터를 교환하게 해주고, 이 때에 데이터는 메시지 전달을 통한 방법이라는 것이다. 즉 실시간으로 데이터를 게시, 구독 및 저장할 수 있는 분산형 데이터 스트리밍 플랫폼으로 정의할 수 있다. 다음과 같은 상황을 만들어 보았다. 각 사람은 네트워크 통신을 통해 각 사람과 연결된다. 이렇게 하면 좋은 점은 무엇일까? 일단, (물론 처음에만) 쉽고 직관적이다. 보통 이렇게 개발하고 있지는 않은가? 필자는 토이프로젝트나 또는 간단한 개발을 하게 될때 당연히 이러한 구조를 사용한다. 어떤 프로젝트에서 다른 프로젝트를 호출하게 될 때 직접적으로 주소를 요청하여 연결시키고는 한다. 이는 당..

PROGRAMMING/Spring cloud

Spring cloud 01 - 전체 흐름도

spring cloud MSA 국비지원에서 'MSA를 위한 Full-stack 개발자 양성과정'을 들은 적이 있다. 기본 교육과정으로 html, css, js / java와 더 나아가 servlet/jsp, spring boot를 수강할 수 있었다. 그 때에는 MSA에 대한 이해도 너무 낮았고, 이것을 Spring boot와 어떻게 연결시키는지에 대한 의문을 갖고 있었다. 프로젝트를 어떻게 해야 쪼갤 수 있는건지, 사실 하나로만 프로젝트를 제작하는 것도 큰 무리가 없어보이기는 했다. 기본적으로 내가 가지고 있는 생각은 모놀리식 아키텍처라고 한다. 모든 코드를 하나의 프로젝트에서 실행시키는 것을 의미한다. localhost에서 개발하거나 규모가 작은 프로젝트에서는 굳이 쪼갤 필요 없이 하나의 프로젝트에서 ..

PROGRAMMING/Docker

Spring boot으로 Dockerfile 생성

1. Spring boot project 제작 및 docker image 생성 haproxy라는 프로젝트를 제작했습니다. maven으로 java 11 version을 사용하며, 이 외의 의존성은 spring web 등 필요한 라이브러리를 가져왔습니다. 만드는 부분은 생략하겠습니다. package com.example.haproxy; import java.net.InetAddress; import java.net.UnknownHostException; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.ui.Model..

PROGRAMMING/AWS

AWS 소규모 아키텍트 (4) - 데이터베이스 선택

우리는 EC2 생성을 통해 서버를 제작하고, 그에 따른 Load Balancing 수행 및 AMI제작, 보안 규칙에 대해 알아보았습니다. 이렇게 서버를 제작했지만 또 하나, 데이터베이스가 남았습니다. S3나 EC2당 EBS볼륨이 하나씩 제작되어 있는 것을 보면 이미 데이터를 저장할 수 있는 곳인데 굳이 데이터베이스 서버를 제작해야 하는 이유는 무엇일까요? EC2에 있는 EBS볼륨에는 제약이 있습니다. 많은 데이터를 보관할 수 있는 것도 아니며 더군다나 데이터를 효과적으로 활용하기 위해서는 데이터베이스의 사용이 필수입니다. 하지만 언제나 그랬듯 우리는 서비스에 맞는 가장 효율적인 데이터베이스를 선택해야 하며, 그 안에서도 버전 및 성능에 대해서 선택해야 합니다. 관계형(Relational) 데이터베이스 관..

PROGRAMMING/AWS

AWS S3 스토리지 클래스

S3에는 모든 객체를 저장할 수 있는 하나의 드라이브 형태를 갖고 있습니다. 그렇기 때문에 객체의 성질마다 가질 수 있는 특징을 이용하여 우리는 S3의 스토리지 클래스를 선택해야 합니다. 만약, 구슬 1개를 보관하기 위해 엄청 큰 바구니에 놓는다거나, 혹은 자주 쓰지 않는 물건들을 제일 앞에 배치하고 자주 쓰는 물건을 제일 뒤에 배치하는 상황이 있다면 어떨까요? 이는 옳지 않은 행동은 아니지만 효율을 생각하지 못하는 것과 같습니다. 따라서 우리는 데이터의 상황에 맞게 스토리지 클래스를 적절히 사용하여야 합니다. 스토리지 클래스는 어디에서 생성할까요? bucket안에서 하나의 파일을 올릴 때 아래의 속성 버튼을 클릭하여 창을 펼치면 스토리지 클래스에 대한 선택사항이 나옵니다. 혹은 다음과 같이 해당 파일 ..

PROGRAMMING/AWS

AWS EC2 인스턴스 구매 옵션

서버를 구입하기 위해 EC2 서비스를 이용하려고 합니다. 하지만 우리가 숙소를 선택할 때에 몇 시간 이용할 것인지, 어느 크기의 방을 선택할 것인지에 대한 고민을 하는 것처럼 서버도 어떠한 PLAN으로 나뉘어 합리적인 선택을 할 수 있도록 돕습니다. 물론, 우리가 숙소의 호스트라고 한다면 더 많은 기간을 머무는 사람은 할인 혜택을 더 줄 것이며, 장기예약을 했지만 변경가능한 손님에게는 고정된 예약자보다는 할인은 조금 적겠지만 혜택을 적용해주는 등의 정책을 수행할 것입니다. 바로 이와 같이 AWS에서는 여러 정책을 통해 서버를 구입할 수 있도록 돕고 있습니다. 그러면 예시를 통해서 어떤 인스턴스의 구매 옵션이 있는지 확인해보고, 각 예시마다 어떤 옵션과 매칭되는지 살펴보도록 하겠습니다. 예시중에 많은 곳에..

PROGRAMMING/Docker

Docker 소규모 아키텍트 (1) - Docker란 무엇일까

안녕하세요. 소규모 아키텍트를 직접 제작해보기 위해 AWS으로 인프라 구축을 하고있었는데, 마침 AWS의 ECR, ECS 서비스가 docker와 연관이 있는 것을 보고 Docker에 대한 소규모 아키텍트 정의를 해보는 것이 필요하다 느끼게 되어 글을 작성합니다. 각 서비스가 어떠한 기능을 가지고 있는지에 대해서는 아직 모르셔도 됩니다. 그냥 AWS 서비스 안에서 docker를 지원하는구나 정도의 수준으로 이해하시면 될 것 같습니다. Docker 도커를 시작하게되면 많은 이야기를 듣습니다. 도커는 컨테이너 기술입니다. 또는 도커는 이미지를 구현합니다. 등의 이야기들을 말이죠. 좋은 문장이기는 하지만 정확하게 무엇을 의미하는지 이해하기가 힘듭니다. 가장 먼저 컨테이너가 무엇인지 살펴보아야 도커를 이해할 수 ..

PROGRAMMING/AWS

AWS 소규모 아키텍트 (3) - Load Balancing과 AMI

Load Balancing에 대한 자세한 정보를 알고싶다면 AWS 소규모 아키텍트 (1) - AWS Service 톺아보기 안녕하세요. 지금부터는 본격적인 AWS서비스와 함께 우리가 무엇을 구현해야 하는지, 왜 이 서비스를 사용하는지에 대해서 본격적으로 탐구해보도록 하겠습니다. 저희는 소규모 아키텍트를 제 oueya1479.tistory.com EC2 제작 방법에 대해 알고싶다면 AWS 소규모 아키텍트 (2) - EC2 제작, EC2 Service 지난 시간 우리는 소규모 아키텍트를 제작하기 위해 AWS 에서 사용되는 서비스 종류를 7가지 살펴보았습니다. 각 너무나 대표적인 서비스라서 하나도 놓치지 말아야 하는데요, 오늘은 이 7가지의 oueya1479.tistory.com Elastic Load Bal..

PROGRAMMING/AWS

AWS 소규모 아키텍트 (2) - EC2 제작, EC2 Service

지난 시간 우리는 소규모 아키텍트를 제작하기 위해 AWS 에서 사용되는 서비스 종류를 7가지 살펴보았습니다. 각 너무나 대표적인 서비스라서 하나도 놓치지 말아야 하는데요, 오늘은 이 7가지의 서비스 중 가장 핵심이 되는 서버 구축 즉, EC2 제작을 해보려고 합니다. 제작하기 전에 EC2에 대한 간단한 개념을 갖기 위해서는 1편 보시는 것을 추천드립니다. 지난 1편 살펴보기 AWS 소규모 아키텍트 (1) - AWS Service 톺아보기 안녕하세요. 지금부터는 본격적인 AWS서비스와 함께 우리가 무엇을 구현해야 하는지, 왜 이 서비스를 사용하는지에 대해서 본격적으로 탐구해보도록 하겠습니다. 저희는 소규모 아키텍트를 제 oueya1479.tistory.com EC2 생성 EC2를 제작하기 위해서 AWS 홈..

PROGRAMMING/AWS

AWS 인스턴스 유형 이름 규칙 알아보기

EC2를 생성하기 위해서는 OS이미지 및 인스턴스 유형에 대해서 선택해야 합니다. 많이 들었다시피 t2.micro는 AWS에서 지원하는 프리 티어 인스턴스 유형입니다. 그렇다면 t2의 정체는 무엇이고, 왜 micro라는 이름이 붙여져서 사용되는지에 대해 알아보도록 하겠습니다. t2.micro는 다음과 같은 이름 규칙으로 지어져있습니다. 이름 t 2 ? . micro 유형 인스턴스 패밀리 세대 추가 기능 구분자 인스턴스 크기 우리는 인스턴스 패밀리에 대해서 먼저 알아보도록 하겠습니다. 인스턴스 패밀리 범용 어느 한쪽으로도 치우쳐 있지 않은 AWS EC2 인스턴스 유형입니다. AWS에 따르면 균형 있는 컴퓨팅, 메모리 및 네트워크 리소스를 제공한다고 합니다. 머신 러닝이나 딥러닝, 또한 특수한 상황에 놓여있..

Heony
heo__ony