전체 글
-
MSA, 마이크로 서비스 아키텍처CS 2023. 3. 19. 18:05
넷플릭스, 배달의 민족, 쿠팡 그리고 11번가. 이 유명한 서비스들의 공통점이 있습니다. 바로 대규모 서비스라는점. 그리고 마이크로 서비스 아키텍처(MSA)를 도입했다는 점입니다. 오늘 이 MSA에 대해 공부한 내용을 공유하도록 하겠습니다. 그렇다면 과거로 돌아가 이 기업들이 MSA의 이전에는 어떤 아키텍처를 사용하였는지 부터 시작하도록 하겠습니다. 모놀리식 아키텍처 모놀리식 아키텍처는 여러 기능들이 하나의 애플리케이션에 뭉쳐있는 서비스 입니다. 기능들을 단 하나의 코드베이스로 개발하고 배포 시 단일 데이터베이스를 사용합니다. 초기에는 개발 속도도 빠르고 배포하기도 쉽고 기능을 붙이기도 쉽습니다. 하지만 이 한 애플리케이션에 기능을 점점 붙여갈수록. 즉, 대규모 서비스가 되어갈수록 문제점이 들어나는데요...
-
[leetcode 234] Palindrome Linked Listleetcode 2022. 5. 19. 01:58
를 보고 공부한 내용입니다. https://leetcode.com/problems/palindrome-linked-list/ Palindrome Linked List - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 연결리스트가 팬린드롬인지 확인하는 문제이다. 이전에 주어진 리스트가 팬린드롬인지 확인하는 문제가 있었는데 그와 같은 방법으로 deque에 넣어서 풀이 하였다. deque를 이용한 풀이 # Definition for singly-linked list...
-
[leetcode 121] Best Time to Buy and Sell Stockleetcode 2022. 4. 12. 00:21
를 보고 공부한 내용입니다. https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ Best Time to Buy and Sell Stock - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 처음에는 브루스포스로 모든 경우를 계산해 최대이익을 찾았는데 O(n^2)으로 시간초과가 발생했다. 다른 방법으로는 prices를 for문으로 돌면서 최소price와 최대이익을 계속 비교하며 갱신해나가는 것이다. 이 방..
-
[leetcode 238] Product of Array Except Selfleetcode 2022. 4. 1. 02:11
를 보고 공부한 내용입니다. https://leetcode.com/problems/product-of-array-except-self/ Product of Array Except Self - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 모든 요소의 합을 곱해놓은 다음 각 자리의 값으로 나누는 풀이가 가장 먼저 떠올랐다. 하지만 문제에 명시되어 있듯이 나누기를 쓰면 안되고 또한 0이라는 요소가 있을경우 저렇게 접근하면 복잡해질거 같아 다른방향으로 생각해보기로 했..
-
API, 라이브러리, 프레임워크CS 2022. 3. 23. 17:37
많이 듣고 쓰는 것들이지만 막상 개념을 설명하려니 막막한 부분이 있어서 공부해서 정리해 놓으려고 한다! API API란 Application programming interface의 약자로 말 그대로 프로그램이 소통(코드끼리)하는 방법으로 응용 프로그램에서 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스이다. 예를 들면 키보드라고 생각할 수 있다. 우리는 내부구현은 모르지만 키보드를 통해 버튼을 누르고 컴퓨터와 소통한다. API는 서버에서 원하는대로 만들고(어떤 버튼이 눌리면 어떤 동작을 할지 등) 우리는 그 내부로직은 알바아니고(알지도 못한다.) 버튼을 통해 사용하기만 하면 되는것이다. REST API, GraphQL API, 공공 API도 같은 목적이다. 즉, 프로그램이 ..
-
[leetcode 561] Array Partition Ileetcode 2022. 3. 23. 03:24
를 보고 공부한 내용입니다. https://leetcode.com/problems/array-partition-i Array Partition I - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 좀만 생각하니까 바로 어떻게 풀지 생각이 나는 쉬운문제라고 생각한다. 두개씩 쌍을 이룬 것의 최솟값의 합이 최대가 되어야 한다. 따라서 최대한 수가 차이 안나는것 끼리 pair로 묶어야 최대가 될것이라고 생각했고 차이가 안나는것끼리 모여놓게 하려고 정렬을 해주었다. 배..
-
[Java] 추상클래스Java 2022. 3. 20. 17:25
추상메서드는 선언만 있고 구현은 없는 메서드이다. 추상메서드를 하나라도 가진 클래스는 추상클래스이며 abstract로 표시한다. 보통 클래스는 객체를 만들기 위해 사용하는 반면, 추상클래스는 객체를 만들 수 없고 서브클래스를 만드는 용도로만 사용한다. 이제부터 추상클래스가 필요한 경우를 예를 통해 설명하도록 하겠다. 길지만 겹치는 코드부분이 많다. 간단한 다이어리 프로그램을 만들것인데 다음 세가지 사건을 기록하고 읽을 수 있는 프로그램이다. 생일, 개강일 같은 oneday 사건 시작과 끝의 날짜가 있는 duration 사건 데드라인이 있는 deadline 사건 우선 month와 day를 가진 날짜를 나타내는 MyDate클래스를 만들겠다. public class MyDate { public int mont..
-
[leetcode 15] 3Sumleetcode 2022. 3. 19. 03:01
를 보고 공부한 내용입니다. https://leetcode.com/problems/3sum 3Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제를 보고 지난번에 풀었던 2Sum과 비슷한 풀이로 풀면 되겠다고 생각했다. 그러나 이 문제의 경우 시간복잡도가 n(O^3)를 넘어갈 경우에 시간초과가 떠서 브루트포스 말고 다른 방법으로 풀어야 한다. 어떤 방법으로 풀까 생각하던 중에 이 문제는 인덱스에 관련한 문제가 아니기 때문에 저번에 2Sum에서 써먹지 못..