본문 바로가기

전체 글108

[Programmers/Lv.2] 도넛과 막대 그래프 - Java 알고리즘 문제 풀이 / 프로그래머스 (programmers) - 도넛과 막대 그래프 문제 내용을 설명하기엔 너무 길어서 문제에 대한 요약 따로 하지 않고, 문제의 제한사항과 내가 푼 풀이법에 대해서만 설명하겠다. ▏문제 설명 제한사항 1 ≤ edges의 길이 ≤ 1,000,000 edges의 원소는 [a,b] 형태이며, a번 정점에서 b번 정점으로 향하는 간선이 있다는 것을 나타냅니다. 1 ≤ a, b ≤ 1,000,000 문제의 조건에 맞는 그래프가 주어집니다. 도넛 모양 그래프, 막대 모양 그래프, 8자 모양 그래프의 수의 합은 2이상입니다. ▏문제 풀이 각 그래프의 구분하는데 중점을 두고 문제를 해결했다. 제일 쉽게 구분할 수있는 것은 막대 그래프였다. 다른 두 그래프와는 달리, 그래프의 꼭대기 정.. 2024. 4. 20.
코드형 인프라 : IaC - Infrastructure as Code ▏시작하는 말 클라우드 팀이 신설되고, 내가 그 곳으로 전배가게 되면서 여태까지 관리되지 않았던 클라우드 환경을 맡게 되었다. 유지보수가 전혀 이루어지지 않고, 어떤 서비스인지도 모를 정도로 관리가 소홀했던 전사적인 인프라 환경을 담당하게 되었다. 이에 따라 효율적이고 체계적인 유지보수가 가능하도록 개선하기 위해 IaC에 대해 알아보게 되었다. 이에 관한 내용을 오늘은 정리해보려한다. ▏IaC 란? 코드형 인프라(Infrastructure as Code, IaC)는 IT 인프라 프로비저닝을 자동화 하는 개념이다. IaC를 사용하면 인프라를 구축하고 배포하는 일련의 과정을 애플리케이션과 유사하게 코드로 관리할 수 있다. 이를 통해 인프라 관리가 훨씬 효율적으로 이루어지며, 매번 동일한 환경을 프로비저닝하는.. 2024. 4. 16.
[AWS] RDS 와 애플리케이션의 VPC 분리 이유 ▏시작하는 말 회사에서 나는 NDS 와 협업하여 사내 클라우드를 구축하는 업무를 맡고 있다. 새롭게 구축될 인프라의 설계를 진행 중인데, 이 과정에서 NDS 측에서 RDS의 VPC를 별도로 구축하는 것을 제안했다. 방화벽을 비롯한 다양한 보안 기능이 VPC 내에 구비되어 있음에도 불구하고 왜 VPC를 분리해야 하는지 궁금증이 생겨 찾아보게 되었다. ▏분리 이유 보안 격리 RDS는 데이터베이스를 호스팅 하는 서비스로, 중요한 데이터가 저장될 수 있다. 특히 우리 회사의 경우는 은행권이나 공공을 주로 수주하고 있어 더욱 중요하다. 때문에 애플리케이션 서버와 RDS를 독립된 VPC로 분리함으로써 애플리케이션에서 발생하는 잠재적인 보안 위협이 RDS에 영향을 끼치는 것을 방지할 수 있다. 네트워크 제어 애플리케.. 2024. 4. 13.
[AWS] CloudFront ▏시작하는 말 회사가 SaaS 전환을 시작하게 되면서, 다른 리전에서도 애플리케이션을 사용해야하는 상황이 발생했다. 이를 해결하기 위해 선택한 서비스가 바로 CloudFront 였다. 과거에는 단순히 공부할 때만 다루던 주제였지만, 실무 작업을 통해 실제로 사용하면서 완전히 이해하게 되었다. 이를 토대로 CloudFront에 대해 설명하려고 한다. CloudFront 를 설명하기에 앞서, CDN 부터 간략히 설명을 하도록 하겠다. ▏CDN Content Delivery Network (CDN)은 지리적 제약 없이 전 세계 사용자에게 빠르고 안전하게 콘텐츠를 전송하는 기술이다. 어떻게 다른 리전들에 애플리케이션을 배치하지 않고도 빠른 전송을 실현할 수 있는지 궁금해 CDN에 대해 알아보게 되었다. 그 해답.. 2024. 3. 27.
[AWS] NLB - Network Load Balancer ▏시작하는 말 누군가 ALB와 NLB의 차이점을 물었을 때, 난 자격증 공부시 달달 외웠던 방식인 네트워크 계층, 애플리케이션 계층의 차이라고 밖에 설명을 못하는 것 같아 다시 공부하게 되었다. ALB의 대한 개념을 알고싶다면, [AWS] ALB -Application Load Balancer 게시글을 읽고오면 된다. ▏Network Load Balancer (NLB) AWS의 로드 밸런서 서비스 중 하나인 Network Load Balancer는 주로 OSI Layer4에서 작동한다. 4계층(전송계층)에 위치하며, TCP및 UDP와 같은 전송계층 프로토콜을 기반으로 트래픽을 관리한다. NLB는 IP주소 및 포트 번호와 같은 네트워크 및 전송 계층의 속성을 기반으로 트래픽을 라우팅하고 분산한다. 이처럼 .. 2024. 3. 23.
[AWS] ALB - Application Load Balancer ALB에 대한 설명을 하기 전에, Load Balancer(LB) 및 Elastic Load Balancer(ELB) 에 대해 간단히 살펴보겠다. ▏Load Balancer (LB) Scale-up / Scale out 특정 인터넷 서비스에 동시에 접근하려는 클라이언트가 수천만 명이 될 경우, 트래픽이 증가하여 서비스가 느려지거나 멈출 수 있다. 이러한 트래픽의 부하 해결을 위한 방법으로는 Scale-up과 Scale-out이 있다. # 스케일 업(Scale-up) : 수직확장의 개념으로, 기존 서버의 성능을 향상시키기 위해 CPU나 메모리를 업그레이드 하는 방법 # 스케일 아웃(Scale-out) : 수평확장의 개념으로, 트래픽을 여러 대의 컴퓨터나 서버에 분산하여 처리하는 방법 서버 스펙을 늘리는 S.. 2024. 3. 19.
회사생활 회고 및 앞으로의 계획 그간 이런저런 핑계로 블로그 작성을 하지 않았는데, 21년 11월 회사 입사후 지내온 나의 생활을 회고해보겠다. | 21년 11월 입사 입사한 부서는 이미 Java 기반의 프레임워크(ProWorks4) 및 Spring과 같은 프레임워크(ProWorks5)개발을 완료하고, 이를 업체들에 제공하고 유지 보수를 담당하는 상태였다. 때문에 나는 자바 백엔드 개발로 지원했지만, 주로 서버 구축과 제품 설치와 같은 업무를 맡게 되었다. 이에 따라 서버 관리와 구축에 많은 시간을 투자하게 되었는데, 처음에는 원했던 개발 업무를 수행하지 못한것에 대해 약간의 불만이 있었다. 그러나 새로운 서버 관련 업무를 경험하면서 서버 환경에 대한 이해를 높일 수 있었고, 이 업무 또한 흥미롭게 다가왔다. 이 과정에서 구글 검색을 .. 2024. 3. 16.
Spring Security란 ? ▏시작하는 말 Spring Security 를 알게 된 배경은 JWT를 사용해보고자 찾다보니 Spring Security 에서 JWT 구현하는 글들이 많이 있어 알게되었다. 그래서 두가지 개념을 먼저 공부하게 되었고, 지금은 프로젝트에 적용하는 중이다. 오늘은 내가 공부한 개념에 대해서 설명하도록 하겠다. JWT에 대한 개념이 궁금하다면 JWT란 ? 게시글을 참고하면 된다. ▏Spring Security 란 ? Spring Security는 스프링 기반의 애플리케이션의 보안(인증, 인가, 권한 등)을 담당하는 스프링 하위 프레임워크다. # 인증 (Authenticate, 누구인지) 접근하려는 유저가 누구인지 확인하는 절차 # 인가 (Authorization, 어떤 것을 할 수 있는지) 인증된 사용자가 요.. 2023. 4. 26.
Cookie / Session / Token 이란 ? ▏시작하는 말 그간 사이드 프로젝트를 진행하면서 보안에 대해 신경 쓸 생각을 하지 못했다. 아니, 더 솔직히는 중요함을 알면서도 귀찮아 생각하고 싶지 않았던 것이다. 그저 쉬운 방법인 세션 쿠키방식으로 구현했고, 사용하면서도 개념을 제대로 이해하려는 노력조차 없었다. 회사를 다니다 보니 보안에 대해 조금 더 깊게 생각해보게 되었고 그렇게 틈틈이 공부한 내용을 설명해보고자 한다. ▏인증 방식 HTTP는 stateless 성질로, 본래 정보를 유지하지 않는다. 클라이언트와 서버 사이에 통신이 필요할 때 그 순간 요청 / 응답을 하고, 완료되었다면 연결이 끊겨(connectionless) 매번 새로운 요청을 해야한다. 이는 HTTP 가 인터넷상에서 불특정 다수와 연결해야 하는 환경을 만들기 위해 설계되었기 때.. 2023. 4. 23.
JWT (Json Web Token) 란 ? ▏시작하는 말 업무 회의 시간에 JWT란 것을 처음 알게 되었는데, 지금 만들고 있는 사이드 프로젝트에 적용하면 좋을 것 같아 소스 분석 및 개발을 진행하며 알게된 내용을 정리하고자 한다. 단순 jwt만 사용한 것이 아닌 jwt와 spring security를 접목시켜 개발했다. 예제 소스를 확인하고자 한다면 yujin's github 를 참고하길 바란다. 설명하기에 앞서 서버가 클라이언트 인증하는 방식에 대해 먼저 공부하고 오면 좋다. 이는 Cookie / Session / Token 이란 ? 게시글을 참고하면 된다. ▏JWT 란 ? Token 인증 방식 중 가장 널리 알려진 방법이 바로 JWT(Json Web Token) 이다. 이름에서 알 수 있듯이 JSON 객체를 사용하여 토큰 자체에 정보를 저장.. 2023. 4. 23.
[Linux] Linux에서 Python 스크립트 (.py) 실행하기 ▏목적 ◦ Python 설치하기 ◦ pip, flask 설치하기 ◦ Linux에서 .py 실행하기 ▏시작하는 말 python 프로젝트를 로컬로 개발한 후에 서버에서 돌리려고 했으나 이것저것 많은 오류들로 쉽게 실행하지 못했다. 오늘은 그 에러들을 설명해가며 linux 서버에서 .py 실행하는 방법을 설명하도록 하겠다. ▏Python 설치하기 내가 사용한 Oracle Cloud 의 경우는 python3 버전이 이미 설치되어 있어 나는 이 과정을 생략했다. ▏pip / flask 설치하기 python 프로젝트를 하면서 ???를 사용하려면 pip 명령어로 그와 관련된 것들을 설치했을 것이다. 마찬가지로 linux 환경에서도 설치해주어야 하는데 그러려면 우선적으로 python 가상환경을 실행해야한다. 가상환경 .. 2023. 1. 17.
[Python] 자료구조 LinkedList 구현하기 ▏목적 ◦ 자료구조 Linked List 이해하기 ◦ Python으로 Linked List 구현하기 ▏자료구조 Linked List 란? Linked List (연결 리스트)란 크기 변경이 유연한 자료구조다. 때문에 데이터를 자유롭게 삽입 · 삭제할 수 있다는 장점이 있다. 집합의 단위를 List, 각 요소들의 단위를 Node 라고 부른다. LinkedList는 한 줄로 연결된 형태로, 리스트의 첫 번째 노드를 Head (헤드), 마지막 노드를 Tail (테일) 이라고 한다. 각 노드는 1. 데이터의 내용을 담는 부분 2. 다음 노드의 주소값을 지닌 포인터 변수 로 구성되어 있다. LinkedList를 배열과 비교하여 장단점을 살펴보자. 장점 - 삽입, 삭제의 용이성 배열은 index 로 크기가 정해져 .. 2023. 1. 12.
반응형