[AWS] EC2 인스턴스 자동 중지 및 시작하기 - Lambda 함수 활용
클라우드2024.12.07 14:36[AWS] EC2 인스턴스 자동 중지 및 시작하기 - Lambda 함수 활용

AWS와 같은 퍼블릭 클라우드를 사용할 때, 가장 중요한 것은 비용 관리입니다.많은 사용자가 활용하는 EC2 인스턴스는 중지되면 비용이 부과되지 않는데요.이전 게시글에서 인스턴스를 자동으로 중지하는 것을 Quick Setup으로 설정하는 방법을 알아봤습니다.도입부는 중복된 내용이니, 구현 방식을 확인하실 분은 ''개발 과정''으로 넘어가시면 되겠습니다. 기본적으로 AWS EC2는 온디맨드 요금제를 채택하고 있습니다. 온디맨드 요금제는 사용한 만큼 비용을 지불하는 방식인데요. (자료: EC2 요금제)인스턴스가 중지되면 인스턴스에 대한 비용이 부과되지 않습니다. 물론 함께 사용하는 Elastic IP, 볼륨 스토리지 등에 대한 비용은 계속 청구됩니다.사용하지 않을 때 인스턴스를 중지시키면 운영 비용을 최소화..

[AWS] EC2 인스턴스 자동 중지 및 시작하기 - Quick Setup 활용
클라우드2024.11.23 20:55[AWS] EC2 인스턴스 자동 중지 및 시작하기 - Quick Setup 활용

AWS와 같은 퍼블릭 클라우드를 사용할 때, 가장 중요한 것은 비용 관리입니다.많은 사용자가 활용하는 EC2 인스턴스는 중지되면 비용이 부과되지 않는데요. 이를 편리하게 관리하기 위해 자동화하는 것을 다뤄보겠습니다. 기본적으로 AWS EC2는 온디맨드 요금제를 채택하고 있습니다. 온디맨드 요금제는 사용한 만큼 비용을 지불하는 방식인데요. (자료: EC2 요금제)인스턴스가 중지되면 인스턴스에 대한 비용이 부과되지 않습니다. 물론 함께 사용하는 Elastic IP, 볼륨 스토리지 등에 대한 비용은 계속 청구됩니다.사용하지 않을 때 인스턴스를 중지시키면 운영 비용을 최소화할 수 있습니다.하지만, 사람이 일일이 하다 보면 까먹기 마련이지요. 인스턴스의 개수가 많아지면 24시간 돌아야 하는 인스턴스도 만들어지기도..

[네트워크] IP 주소 체계, 클래스와 CIDR 표기법
네트워크2024.10.28 22:45[네트워크] IP 주소 체계, 클래스와 CIDR 표기법

이전 게시글에서 IP와 관련한 내용을 톺아보았습니다. [네트워크] IP(Internet Protocol)와 관련된 것들 톺아보기목표OSI 7 계층에서, 3 계층인 Network 계층의 대표적인 프로토콜, IP(Internet Protocol)에 대해서 톺아보겠습니다.전체적인 구조와 흐름을 복습할 예정입니다. 개요통신을 위해서는 많은 절차와 작업이chanos.tistory.com이번 게시글에서는 IP 주소 체계에 대해서 정리해 볼 텐데요. 보통 IP 주소라고 하면 192.168.10.2와 같은 32비트 형식을 생각하는데요. 알게 모르게 192.168.10.2/32와 같은 형식도 많이 접했을 것입니다.처음엔 조금 낯설지만 익숙해지면 어떤 네트워크에 속한 주소인지 한눈에 알 수 있습니다. 특수 목적을 가진 I..

[네트워크] IP(Internet Protocol)와 관련된 것들 톺아보기
네트워크2023.09.16 22:28[네트워크] IP(Internet Protocol)와 관련된 것들 톺아보기

목표OSI 7 계층에서, 3 계층인 Network 계층의 대표적인 프로토콜, IP(Internet Protocol)에 대해서 톺아보겠습니다.전체적인 구조와 흐름을 복습할 예정입니다. 개요통신을 위해서는 많은 절차와 작업이 필요합니다. 이에, ISO(국제 표준화 기구)에서는 7 단계로 나눴고, 다들 잘 알고 계실 OSI 7 계층입니다.복잡한 통신 과정과 흐름을 쉽게 확인할 수 있고, 문제가 발생했을 때 비교적 수월하게 해결할 수 있기 때문입니다.다른 계층에서 어떤 작업을 하는지 신경 쓸 필요 없이 내가 맡은 일만 잘 해내면 됩니다. 이번 포스팅에서는 7 계층 중, 3 계층인 Network 계층을 중심으로 확인하려고 합니다.Network 계층의 목적을 간략히 말씀드리면 다음과 같습니다.데이터를 적당한 크기로..

[NEMODU] 메인 화면 조회 API 개선하기
NEMODU2023.04.10 17:57[NEMODU] 메인 화면 조회 API 개선하기

목표 메인 화면 조회 API를 개선하는 과정을 소개합니다. 개요 처음 프로젝트를 시작하면서 동아리 활동 기간인 2달에 맞춰 개발을 진행했습니다. 기간을 맞추는 것을 우선순위로 진행하면서, 기술 부채가 쌓이고 있었습니다. 그 중 하나는 메인 화면을 조회하는 로직입니다. 메인 화면은 애플리케이션에 진입하면 가장 먼저 볼 수 있는 화면입니다. 본인을 포함한 친구, 챌린지 멤버들의 운동 기록과 더불어 기록한 영역 수 등 많은 정보를 한 번에 확인할 수 있는 핵심 기능입니다. 역할을 분배하면서, 해당 기능은 팀원이 담당했었습니다. 이제 백엔드 개발을 혼자 진행하고 있어, 코드 분석부터 문제 해결까지 진행했습니다. 요약 구체적인 내용을 기술하기 전에 간단하게 요약하면 다음과 같습니다. 성능 개선을 위해 두 가지 측..

[MySQL] MySQL 동시성 처리(2) - 트랜잭션의 고립성 보장을 위한 격리 수준과 MVCC
MySQL2023.03.19 20:53[MySQL] MySQL 동시성 처리(2) - 트랜잭션의 고립성 보장을 위한 격리 수준과 MVCC

목표 MySQL의 동시성 처리를 위한 격리 수준과 MVCC에 대해서 알아보겠습니다. 개요 이전 포스팅에서 DB의 Lock에 대해서 알아보았습니다. [MySQL] MySQL 동시성 처리(1) - LOCK 목표 MySQL의 동시성 처리를 위한 Lock에 대해서 알아보겠습니다. 개요 최근 프로젝트를 진행하면서 배포를 앞에 두고 가장 큰 관심사는 동시성 처리입니다. 사용자가 늘어날수록 동시 요청이 많 chanos.tistory.com 이어서 트랜잭션의 고립성 보장을 위한 격리 수준과 MVCC에 대해서 알아보도록 하겠습니다. 트랜잭션 격리 수준 트랜잭션은 작업 단위를 뜻합니다. DB의 값을 업데이트하거나 조회하는 등의 작업의 범위를 지정하는 것입니다. 이렇게 작업 단위를 지정하는 이유는 트랜잭션이 ACID를 보장..

[MySQL] MySQL 동시성 처리(1) - LOCK
MySQL2023.03.14 13:30[MySQL] MySQL 동시성 처리(1) - LOCK

목표 MySQL의 동시성 처리를 위한 Lock에 대해서 알아보겠습니다. 개요 최근 프로젝트를 진행하면서 배포를 앞에 두고 가장 큰 관심사는 동시성 처리입니다. 사용자가 늘어날수록 동시 요청이 많아질 것입니다. 현재 백엔드는 Spring boot로 구성되어 요청마다 스레드가 할당됩니다. 이 말은 즉, 여러 스레드가 한 DB에 동시에 요청을 보낸다는 뜻입니다. DB에 여러 요청에 동시에 들어왔을 때, 데이터 정합성을 보장함과 동시에 성능에 영향을 주지 않도록 하는 방법에 대해서 알아보려고 합니다. 가장 먼저, 데이터 정합성을 보장하기 위한 Lock에 대해서 알아보겠습니다. Lock의 설정 범위 Lock(락)은 여러 트랜잭션이 동시에 처리될 때 데이터의 무결성을 보장하기 위한 수단입니다. 한 트랜잭션이 처리되..

[Spring] 내가 ~Service, ServiceImpl로 분리하는 이유
Spring & Spring boot2023.03.01 12:34[Spring] 내가 ~Service, ServiceImpl로 분리하는 이유

목표 서비스 계층을 개발할 때 ~Service, ~ServiceImpl로 나누는 이유에 대해서 기술합니다. 개요 저는 Spring 기반의 백엔드를 구현하는 프로젝트를 구현할 때 항상 ~Service, ~ServiceImpl과 같이 인터페이스와 구현체로 분리해서 개발했습니다. 처음에는 이렇게 배웠기 때문에 따라 했고, 경험이 쌓이면서 왜 이렇게 해야 하는지에 대한 고민을 하기 시작했습니다. 정말 다양한 측면에서 생각해 볼 수 있는 문제이고, 상황에 따라 의견이 분분한 문제이므로 정답은 없다고 생각합니다. 하지만, 제가 프로젝트에서 이렇게 적용할 때는 그만한 근거가 필요하고, 저는 분리해서 개발하는 게 합당하다고 판단했습니다. 막상 면접 자리에서 '왜 이렇게 구현했는가?'라는 질문을 받았을 때, DI? 확장..

[MySQL] UUID의 개념과 성능 개선 결과
NEMODU2023.02.22 13:17[MySQL] UUID의 개념과 성능 개선 결과

목표MySQL에서 UUID를 최대한 효율적으로 사용해 보기 위한 노력 과정을 기술합니다. 개요관계형 DB에서 데이터(튜플)을 식별하기 위해 PK(Primary Key, 기본키)를 사용합니다.하지만, 클라이언트와 서버 사이에서 데이터를 확인하기 위해 PK를 주고받는 것은 보안적인 측면에서 위험합니다.만약 다음과 같은 URL이 있다면 어떨까요?http://www.domain.com/user/info?userid=1파라미터로 들어가는 userid의 값만 바꿔도, 다른 사람의 정보를 확인할 수 있는 것을 예측할 수 있습니다.이처럼 예측가능한 모델이 되어 SQL Injection의 위험성이 존재하기 때문에, PK값을 그대로 넘겨주는 것은 바람직하지 않습니다.따라서, 고유값을 갖는 특정 값으로 데이터를 식별할 필요..

[JAVA] 정규표현식으로 문제 해결하기
JAVA2022.12.10 21:38[JAVA] 정규표현식으로 문제 해결하기

목표 정규 표현식으로 문제 해결하기: 블로그 테마 변경 중 발생한 대참사 문제 발생 개요 인턴을 진행하면서 한동안 블로그에 소홀했습니다. 쌓여있던 소재들을 다듬어 블로그에 작성하려고 합니다. 그간 수많은 블로그를 보면서 많은 것들을 느꼈습니다. 그 중 하나는, 블로그는 다른 사람이 이해하기 좋게 작성해야 한다는겁니다. 내용도 내용이지만 디자인도 중요한 요소 중 하나입니다. 조잡하게 꾸며놓은 것보다 많은 사람들이 사용하는 테마가 훨씬 보기 편했고, 확실히 다크 테마가 눈이 편하다는 느낌을 받았습니다. 개인적으로 VELOG가 읽기 편하더라구요. 마크다운으로 작성된 문서는 읽기도 편하고 필요한 정보가 어디 있을지 예상이가는 것도 좋았던 것 같습니다. 티스토리 스킨을 찾아보던 중, VELOG와 유사한 정상우님의..

[Software Engineering] 소프트웨어 공학이란?, 소프트웨어 공학의 필요성, 좋은 소프트웨어의 특성
[Software Engineering] 소프트웨어 공학이란?, 소프트웨어 공학의 필요성, 좋은 소프트웨어의 특성
소프트웨어공학
2021.10.14 21:55
목표 소프트웨어 공학이란 무엇인지 알고, 좋은 소프트웨어란 무엇인지 이해하는 시간을 갖겠습니다. 목차 클릭하면 해당 목차로 이동합니다. Software Enginnering(소프트웨어 공학)이란? 좋은 소프트웨어가 가져야 할 특성 정리 개요 소프트웨어 공학(Software Engineering)은 전문적인 소프트웨어를 개발하는데 있어서 필수적인 요소입니다. 이를 고려하지 않고 무작정 개발에 뛰어든다면 실패할 가능성이 매우 높습니다. 실제로 프로젝트를 대략적으로 구상하고 바로 개발에 시작하면, 어느 순간 처음 생각했던 것과 아예 다른 방향으로 흘러가고 있는 것을 확인할 수 있습니다. 그제서야 다시 되돌리는 것은 매우 힘들죠.. 개인적인 공부를 위해 진행하는 프로젝트가 아닌, 기업에서 이런 상황이 발생한다면..
[인공지능 챗봇] Dialogflow로 인공지능 챗봇 구현하기 - (1)
[인공지능 챗봇] Dialogflow로 인공지능 챗봇 구현하기 - (1)
목표 작성된 시나리오를 기반으로 Dialogflow를 이용해서 인공지능 챗봇을 구현하기 위해 기본 지식과 사용법에 대해서 알아보겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 초기 환경 설정 Intent(의도) Entity(개체 정보) Training Phrases(문장 학습) Fullfillment Integration 정리 개요 콘도 예약을 위한 인공지능 챗봇을 개발하는 것이 궁극적인 목표입니다. 인공지능 챗봇이 무엇인지, 왜 필요한지에 대해 알아보고 어떻게 구현할지 시나리오를 작성했습니다. 인공지능 챗봇을 개발하는 것을 도와주는 챗봇 빌더는 IBM 왓슨, Chatfuel, Dialogflow 등 여러 가지가 있습니다. IBM 왓슨은 고성능이지만 유료이고, Chatfuel은 간단하지만 한글을 지원하..
[네트워크] IP 주소 체계, 클래스와 CIDR 표기법
[네트워크] IP 주소 체계, 클래스와 CIDR 표기법
네트워크
2024.10.28 22:45
이전 게시글에서 IP와 관련한 내용을 톺아보았습니다. [네트워크] IP(Internet Protocol)와 관련된 것들 톺아보기목표OSI 7 계층에서, 3 계층인 Network 계층의 대표적인 프로토콜, IP(Internet Protocol)에 대해서 톺아보겠습니다.전체적인 구조와 흐름을 복습할 예정입니다. 개요통신을 위해서는 많은 절차와 작업이chanos.tistory.com이번 게시글에서는 IP 주소 체계에 대해서 정리해 볼 텐데요. 보통 IP 주소라고 하면 192.168.10.2와 같은 32비트 형식을 생각하는데요. 알게 모르게 192.168.10.2/32와 같은 형식도 많이 접했을 것입니다.처음엔 조금 낯설지만 익숙해지면 어떤 네트워크에 속한 주소인지 한눈에 알 수 있습니다. 특수 목적을 가진 I..
[Windows API] Win32 API의 펜과 브러쉬, Old의 의미
[Windows API] Win32 API의 펜과 브러쉬, Old의 의미
Win32 API Programming
2022.02.08 19:38
목표 펜과 브러쉬를 활용해 화면에 도형을 출력해보고, Old의 의미에 대해서 알아보도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 1. 펜(Pen) 2. 브러쉬(Brush) 3. Old의 의미 정리 개요 저번 포스팅에서 GDI, DC 등 그래픽 출력을 위한 기본적인 이론과 스톡 오브젝트에 대해 다루었습니다. [Windows API] Win32 API의 그래픽, GDI와 스톡 오브젝트(Stock Object) 이번 포스팅에선 펜과 브러쉬를 활용해 화면에 도형을 출력하는 실습을 진행할 것입니다. 기본적으로 GDI 오브젝트를 만들어 사용하는 원리는 다음과 같습니다. 펜을 사용하는 것을 예시로 들어보겠습니다. HPEN MyPen, OldPen; // 1.핸들을 선언한다. MyPen = CreatePen..
[백준] 2606번 바이러스, 파이썬 문제 풀이, DFS와 BFS 차이
[백준] 2606번 바이러스, 파이썬 문제 풀이, DFS와 BFS 차이
알고리즘 문제
2022.01.25 16:23
문제 백준 2606번 바이러스 문제를 해결했습니다. 1번 컴퓨터와 연결되어 있는 컴퓨터, 간접적으로 연결되어 있는 컴퓨터도 웜 바이러스에 감염됩니다. 이 때, 1번으로부터 감염된 컴퓨터가 몇 대인지 찾는 문제입니다. https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 문제 풀이 컴퓨터간 상하관계나 방향이 없기 때문에 그래프 문제로 해결할 수 있었습니다. 1번과 연결되어 있는 컴퓨터를 탐색하는 문제이므로 DFS와 BFS로 해결할 수 있습니다. 이번 문제는..
[Windows API] Win32 API를 활용해 시계, 일회용 타이머 만들기 - (2)
[Windows API] Win32 API를 활용해 시계, 일회용 타이머 만들기 - (2)
Win32 API Programming
2022.01.18 01:35
목표 이전 포스팅에서 진행한 MyTimer 프로젝트의 문제점을 찾고 이를 해결해 개선된 프로그램을 작성합니다. 추가로, 특정 상황에서만 잠깐 사용하는 일회용 타이머를 작성해보도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 이전 프로그램의 문제점과 해결 방안 일회용 타이머 만들기 정리 개요 이전 포스팅에서 윈도우에 현재 시간을 출력하는 프로그램을 제작했습니다. 시간은 정상적으로 출력되나, 실행하면 바로 뜨지 않고 1초 후에 뜨고, 화면이 깜빡거리는 문제점이 있었습니다. 이 문제를 해결하면서 일정 시간이 되면 알람이 울리는 프로그램을 작성해보도록 하겠습니다. 추가로, 일정 시간 동안안만 메세지를 띄우는 것도 한 번 해보도록 하겠습니다. 이전 프로그램의 문제점과 해결 방안 이전 포스팅에서 진행한 현재..
[Windows API] Win32를 활용해 마우스 입력하기
[Windows API] Win32를 활용해 마우스 입력하기
Win32 API Programming
2022.01.09 13:34
목표 Win32 API를 활용해 마우스 입력(선 그리기 등)하는 것을 실습하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 마우스 입력시 발생하는 메세지 자유 곡선 그리기 정리 개요 이전 포스팅에서 키보드 입력을 통해 문자열을 화면에 출력하는 프로젝트를 작성했습니다. 이 과정에서 몇몇 변수를 static으로 선언하는 이유와 가상키 코드에 대해서 알아봤습니다. 이번 포스팅에서는 마우스를 통해 그림을 그리는 프로젝트를 작성해보도록 하겠습니다. 마우스 입력시 발생하는 메세지 마우스를 클릭하게 되면 해당 메세지가 발생하게 됩니다. 마우스를 눌렀을 때, 마우스를 이동할 때, 더블클릭할 때, 눌렀다가 뗏을때 각각의 메세지가 발생합니다. 왼쪽 버튼을 눌렀는지, 오른쪽 버튼을 눌렀는지에 따라 각각의 메세지가 발생합니..
[Windows API] Win32 API의 기본구조, 윈도우 프로시저
[Windows API] Win32 API의 기본구조, 윈도우 프로시저
Win32 API Programming
2021.12.26 18:57
목표 WinMain함수에서 전달한 메세지를 처리하는 윈도우 프로시저(WinProc 함수)에 대해서 알아보도록 하겠습니다. 개요 지난 포스팅에서 WinMain에 대한 내용에 대해서 이해하는 시간을 가졌습니다. 사용자의 이벤트로부터 발생되는 메세지를 메세지 큐를 통해 받아서 메세지 처리 전용 함수인 윈도우 프로시저로 전달한다고 했습니다. 윈도우 프로시저는 메세지를 받아서 어떻게 처리하는지에 대해서 알아보도록 하겠습니다. 윈도우 프로시저(Window Procedure, WndProc 함수) WinMain 함수에서 메세지 루프를 통해서 발생한 메세지를 큐에 저장합니다. 해당 메세지를 처리하기 위해서 메세지 처리 전용 함수로 전달되어야 합니다. 이 때, 메세지 처리 전용 함수는 윈도우 프로시저입니다. 윈도우 프로..
image