전체 글 96

github actions를 통한 CI/CD 구축 (+ 도커)

CI(Continuous Integration): 지속적 통합, 배포 가능한 아티팩트(Jar / Image)를 빌드하는 단계 CD(Continuous Delivery/Deployment): 지속적 배포, 실제 환경에 아티팩트를 배포하는 단계 CI/CD 파이프라인을 구축해야 하는 이유 파이프라인은 소스코드에서 시작해서 배포 환경 관리까지의 모든 프로세스를 자동화하는 것을 의미한다. 파이프라인이 없을 경우 사람이 직접 빌드 및 배포를 수행해야하고, 휴먼 에러가 발생하고 표준화가 어려워진다. GitHub Actions 장점 - 깃허브는 파이프라인을 구성하고 자동화할 수 있는 깃허브 액션을 제공한다. - 깃허브에 소스코드를 푸시하면 깃허브 액션에서 CI/CD 파이프라인을 자동으로 실행시킬 수 있다. - 깃허브 ..

인프라 2024.02.01

리눅스 서버에서 자주 쓰는 명령어 모음

서버에 접속하기 서버간 ssh 연결 구성 - Bastion Server를 사용할 별도의 EC2를 생성하고, Bastion Server에서 서비스용 서버에 ssh연결을 설정하는 단계이다. - 서비스용서버에 Bastion Server, 즉 관리자용 서버만이 접속할 수 있게 rsa 로그인 방식으로 공개키/개인키를 생성한다. - id.rsa.pub을 실행하면 공개키 값이 나오는데 그걸 복사하고 서비스용 서버에 접속하여 authorized_keys에 붙여넣기하면 이제 개인키를 가지고 있는 Bastion Server만이 서비스용 서버에 접속할 수 있다. 별칭 설정 예시 위와 같이 설정을 하면 IP입력 없이 서비스용 서버로 접속도 쉽게 할 수 있다 Shell 사용환경 바꾸기 복사용도 더보기 $ sudo vi ~/.b..

인프라/linux 2024.01.19

망 구성하기(외부망/내부망)

이번 글은 목차대로 원하는 곳에 가서 보는 방식의 구성을 하기가 조금 어려웠다. 결국 이번엔 위를 수행해야 아래를 수행할 수 있는 실습 방식으로 글을 썼다. VPC 생성 EC2 인스턴스들이 그냥 서로 막 연결되고 인터넷에 연결만 되는 요구사항이라면 VPC 생성할 필요가 없다. 그런데 이런식으로 망을 구성하면 (구성도 아니고 그냥 인스턴스만 생성한 것이다) 시스템의 복잡성도 올라가고 하나의 인스턴스가 추가되면 그에 대해 누구랑 연결해야 할지 누구랑은 연결이 되면 안될지 구성하는 데 시간이 많이 걸린다. vpc를 적용하면 vpc별로 네트워크를 구성할 수 있다. 하지만 내가 하는 프로젝트는 가장 작은 규모의 프로젝트이기 때문에 하나의 VPC만을 생성하면 된다. 1. aws VPC 들어가서 VPC 생성 클릭 2..

인프라/aws 2024.01.17

[Leetcode 2] Add Two Numbers - 전가산기,연결리스트

https://leetcode.com/problems/add-two-numbers/ Add Two Numbers - LeetCode Can you solve this real interview question? Add Two Numbers - You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and leetcode.com Problems 리스트 두개를 역순으로 만들고 연결리스트의 숫자를 더한다. 그다음 역순으로 리스트를..

Algorithm/Leetcode 2024.01.12

[Leetcode 234] Palindrome Linked List - 스택,데크,러너

https://leetcode.com/problems/palindrome-linked-list/ Palindrome Linked List - LeetCode Can you solve this real interview question? Palindrome Linked List - Given the head of a singly linked list, return true if it is a palindrome or false otherwise. Example 1: [https://assets.leetcode.com/uploads/2021/03/03/pal1linked-list.jpg] Input: hea leetcode.com Problem 연결 리스트가 팰린드롬 구조인지 true/false를 반환해라...

Algorithm/Leetcode 2024.01.04

본인 PC에서 네이버 서버까지 연결하는 전체적인 그림

1. 동그라미 친 PC가 새로 산 본인 PC라 가정하자. 먼저 컴퓨터를 키면 IP, GateWay, DNS, Subnetmask 가 빈칸인 상태이다. 이때, 자동설정으로 둔 경우 동그라미 친 PC는 이 4가지를 알기 위해서 DHCP 서버를 찾는 broadcast를 보낸다. 그러면 스위치를 거쳐 분산 스위치를 거쳐 여기저기로 해당 내용을 보낸다. (단, 해당 LAN영역에만 보낸다. 인터넷 너머로는 보내지 않는다) 2. 그렇게 각종 호스트는 이 응답내용을 받을 것이고 본인이 DHCP가 아니면 폐기한다. DHCP 서버는 이 내용을 받고 새로 할당한 IP 주소 + GateWay 주소 + DNS 주소 + SubnetMask 주소를 해당 PC에 보내준다. + 집 공유기가 보통 DHCP 서버 기능을 내장하고 있다. ..

1.4MB 사진 파일이 서버에서 클라이언트로 전송되는 방식

예를들어, 네이버라는 서버가 있고 한 클라이언트가 네이버서버에 사진 파일 (약 1.4MB 정도의 크기. 패킷 MTU 보다 약 1400배 큰 크기)을 요청 한다고 하자. 네이버 서버는 먼저 HDD / SDD 에 저장된 1.4MB 파일을 애플리케이션에 올린다. 그러나 보통은 1.4MB라는 방대한 크기를 한꺼번에 읽어서 올리지는 않는다. 예를들면 애플리케이션 내에 버퍼 (자료구조 중 하나를 이용할거라 추측된다) 크기가 15바이트 정도라면 1.4MB의 사진 파일 중 5픽셀 정도(RGB 채널 이라면 1픽셀당 3바이트 이기 때문에) 만큼 NIO Buffer를 활용해서 copy 작업을 한다. 이제 socket 파일의 출력 스트림에 버퍼에 저장되있던 데이터를 I/O Copy를 한다. (Send / Receive 작업..

Wireshark 단순하고 기본적인 사용법

설치 https://www.wireshark.org/download.html 접속 본인 운영체제에 맞는 프로그램 설치 Read me first.html을 열어 추가적으로 설치해야 될 부분을 확인 패킷을 capture 하는 것이 필요하기 때문에 ChmodBPF 패키지도 설치한다. 그리고나서 Wireshark 애플리케이션을 실행시킨다. Capturing packets capture 섹션에서 NIC들을 확인이 가능하고 네트워크에 연결된 부분을 확인할 수 있다. 현재 이더넷은 연결 안되있고 WIFI만 연결되있는 상태임을 확인할 수 있다. 이제 네트워크에 연결되있는 NIC 중 하나를 선택하여 더블 클릭하면 그 NIC에서 전송되고 있는 여러 패킷들을 확인할 수 있다. 여기서 캡처하는 동안 특정 웹사이트에 접속해보고..

[Leetcode 42] Trapping Rain Water - 투 포인터

https://leetcode.com/problems/trapping-rain-water/ Trapping Rain Water - LeetCode Can you solve this real interview question? Trapping Rain Water - Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it can trap after raining. Example 1: [https://assets.leetcode.com/upl leetcode.com Problem 높이를 입력 받아 얼마나 많은 물이 쌓일 수 있는 지 계산 입력 : [0,..

Algorithm/Leetcode 2023.12.26