본문 바로가기

CS117

리눅스 프로세스 사용량 분석, htop 응용하기 이전 글에 이어서 작성하는 리눅스 프로세스 사용량 분석 응용 하기 방법입니다. 아래 글도 한번 읽어주시면 감사하겠습니다. 리눅스 프로세스 좀 더 잘 들여다보기 - htop 사용법 리눅스 프로세스 좀 더 잘 들여다보기 - htop 사용법 최근 운영 중인 서비스가 프로세스를 많이 사용하게 되면서, ps 나 top 보다 조금 더 나은 도구가 필요하다는 생각이 들었습니다. 그래서 찾아보니 htop 이라는 툴이 있어서 일단 VM에서 어느정도 armin.tistory.com htop 기능의 활용 htop 을 실행하기 전 옵션을 활용하여 원하는 동작을 수행할 수도 있지만, htop 실행 후에도 옵션에서 제공했던 기능들을 활용 가능합니다. 위에 보이는 htop 실행화면을 보면 F1 ~ F10 까지의 메뉴가 있으며, 아.. 2024. 4. 19.
리눅스 프로세스 좀 더 잘 들여다보기 - htop 사용법 최근 운영 중인 서비스가 프로세스를 많이 사용하게 되면서, ps 나 top 보다 조금 더 나은 도구가 필요하다는 생각이 들었습니다. 그래서 찾아보니 htop 이라는 툴이 있어서 일단 VM에서 어느정도 기능을 제공하는지 확인해 보았습니다. 설치 htop 설치는 apt, snap 또는 소스코드 빌드 등 여러 방법으로 가능하다. 각자 OS에 맞는 패키지 관리 도구를 이용하도록 하자. 저는 apt 로 설치를 진행했습니다. 명령어, 옵션 새로운 명령어를 설치하면 help 또는 man page를 확인해 보곤 합니다. 몇 가지 옵션들이 뜨는데요, 하나씩 천천히 확인해 보겠습니다. 1. htop 그냥 htop명령을 입력했을 때 입니다. 각종 프로세스 정보들과 개별 코어가 얼만큼의 리소스를 사용하고 있는지를 보여줍니다... 2024. 4. 13.
AWS Amplify 로 AWS 웹앱 구현하는 방법 AWS Amplify AWS Amplify는 프런트엔드 웹 및 모바일 개발자들이 클라우드 기반 애플리케이션을 쉽게 구축, 연결 및 호스팅 할 수 있도록 도와주는 JavaScript 라이브러리입니다. AWS 는 Amplify 를 통해 클라우드 내에서 앱을 빌드하는데 필요한 모든 기능들을 제공합니다. AWS Amplify를 사용하면 다음과 같은 기능을 수행할 수 있습니다. 프런트엔드 및 백엔드 연결: Amplify를 사용하여 프런트엔드 애플리케이션과 백엔드 서비스를 연결할 수 있습니다. 데이터베이스, 인증, 스토리지 등과 같은 백엔드 기능을 쉽게 추가할 수 있습니다. 호스팅 및 배포: Amplify를 사용하여 프런트엔드 웹 앱을 빠르고 안전하게 배포하고 호스팅 할 수 있습니다. CI/CD 워크플로를 통해 프.. 2024. 3. 23.
MSA에서 서비스 간 효과적인 통신을 책임지는 Service mesh 개념 읽어보기 Service mesh 최근 신규 서비스 설계를 하면서 Service mesh와 Istio에 대한 내용들을 보게 되었습니다. 직접 사용해 보거나 공부를 해본 적은 없고 간접적으로 이런 게 있다 정도로만 알고 있었는데요, 말 나온 김에 가볍게라도 리서치를 해봐야겠다 싶어서 포스팅을 작성합니다. In software architecture, a service mesh is a dedicated infrastructure layer for facilitating service-to-service communications between services or microservices using a proxy. - 출처 : 위키피디아 위키피디아에서는 Service mesh는 proxy를 사용하여 마이크로 서비스,.. 2024. 3. 16.
Standard stream의 유형 stdout, stderr 차이점과 활용 사진: Unsplash의Ilya Pavlov 표준 스트림 유형 표준스트림 유형은 3가지 I/O 연결 유형이 있습니다. 1. standard input ( stdin ) Standard input은 프로그램이 데이터를 입력 받는 스트림입니다. 파일을 읽거나, CLI에서 입력을 받는 경우에 standard input을 사용하게 됩니다. 2. standard output ( stdout ) Standard output 은 프로그램이 출력 데이터를 쓰기 위한 스트림 입니다. 모든 프로그램이 stdout 스트림을 사용하지는 않습니다만, 터미널에 출력을 쓰는 경우 stdout 스트림을 사용한다고 볼 수 있겠습니다. stdout 의 파일 디스크립터는 1 을 사용하고 있습니다. 파일디스크립터 1에 내용을 쓰는 경우 s.. 2024. 3. 5.
리눅스 개발하면서 C++ 디버깅 방법 - gdb breakpoint(중단점) 활용 윈도에서 visual studio를 이용하거나 이클립스로 개발을 했을 때 디버깅에 대한 고민은 크게 하지 않았던 것 같습니다. IDE가 강력한 기능을 제공하고 있고, 편의성이 상당했기 때문입니다. 하지만 리눅스에서 개발을 하는 경우라면 어떨까요? DISPLAY를 잡고 IDE를 통해 개발한다면 윈도우와 큰 차이는 없을지도 모르겠습니다. 아니면 IDE에 ssh 설정을 해서 개발을 하는것도 방법이겠죠. GDB 저는 리눅스에서 vim을 이용하여 개발을 하고 있습니다. 디버깅은 gdb를 주로 사용하고요. 너무 old fashion 인가 싶지만.. 다양한 업계가 있고 제한적인 개발환경이 있으니 너무 뭐라 하지 않으셨으면 좋겠습니다. 여하튼 다른 개발 도구를 쓰더라도 디버깅 만큼은 gdb를 사용하게 될 것 같습니다... 2024. 3. 4.
[C++] gdb이용하여 thread 분석하기 C++ 프로그래밍을 하면서 디버깅은 어떻게 해야 할까요? 윈도우에서는 Visual Studio 라는 IDE를 통해 수월하게 디버깅이 가능하지만, 리눅스에서는 그렇지 않습니다. 리눅스 터미널에서는 디버깅 시 GDB를 주로 이용하며, 오늘은 GDB 를 이용한 Thread 를 분석방법에 대해 알아보려고 합니다. 기초적인 사용방법에 대해서는 본문 끝에 링크를 달아두었으니 이전 포스팅을 참고 부탁드리겠습니다. GDB GDB 는 GNU 프로젝트 디버거 입니다. GDB는 프로그램이 어떻게 동작하는지 분석할 수 있도록 도와줍니다. GDB 사용 전 이 점은 반드시 숙지하고 있어야 하는 부분이 있는데요, 바로 빌드 시 별도 옵션을 추가해야 하는 점 입니다. C, C++ 코드를 빌드하면서 추후 gdb로 디버깅이 필요하다면 .. 2024. 3. 2.
읽으면서 배우는 소프트웨어 - MSA(Micro Service Architecture) Micro Service Architecture Micro service architecture(이하 MSA)는 소프트웨어 설계 유형 중 하나입니다. 독립된 서비스의 조합으로 하나의 어플리케이션을 개발하는 설계로서 클라우드와 컨테이너의 발전과 함께 애플리케이션 개발에 널리 사용되고 있습니다. 장점 Micro Service Architecture는 배포와 확장성이 용이하다는 점이 가장 큰 장점입니다. 서비스가 독립적으로 수행되기 때문에 지속적인 변경에 의한 어플리케이션 영향이 적으며, 변경용이성 확보는 요구사항 변경에 대응을 빠르게 합니다. 급변하는 사용자 요구에 쉽게 대응할 수 있다는 점은 설계적인 관점에서 상당한 장점이 될 수 있습니다. 또한, 확장성을 통해 Availability와 Performanc.. 2024. 3. 1.
[makefile 활용] makefile로 코드빌드 하기 사진: Unsplash의Ilya Pavlov 리눅스 환경에서 프로젝트를 진행하는 경우 makefile 을 작성하는 경험을 하게됩니다. 직접 작성하지 않더라도 한번 쯤 사용하게 되지요. 오늘은 makefile에 대한 개념을 설명하고 어떻게 활용할 수 있는지 알려드리겠습니다. makefile 소프트웨어 프로젝트를 빌드하고 컴파일하는 데 사용되는 스크립트 파일 Makefile은 주로 C, C++, 그리고 다른 컴파일 가능한 프로그래밍 언어의 프로젝트에서 자주 사용됩니다. Makefile은 프로젝트의 의존성과 빌드 규칙을 정의하여 빌드 프로세스를 자동화합니다. gcc 또는 g++ 을 이용한 빌드를 구성할 때 각종 옵션들을 makefile에 정의함으로써 개발자의 실수를 방지하고 기능을 자동화 가능합니다. Make.. 2024. 2. 26.
비전공자를 위한 프로그래밍 개념 - 프로세스와 스레드 사진: Unsplash의Ilya Pavlov 오늘은 프로그래밍을 시작하기 위한 기초개념인 프로세스와 스레드에 대한 설명입니다. 컴퓨터 과학 또는 공학 전공자라면 운영체제 시간에 공룡책을 보면서 접했을 개념입니다만, 분명 그런 경험없이 코드를 작성한다거나, 운영업무를 도맡아 하시는 분들도 있을 것이라고 생각이 됩니다. 실제로 제 주변에서 많이 보고 있구요. 요즘은 정말 다양한 분야의 사람들이 코딩을 공부하여 업무를 수행하다 보니 업무에 필요한 핵심 내용 외에는 놓치는 것들이 있는 것 같아 제가 아는 내용들을 최대한 풀어보려고 합니다. 인터넷 검색하면 동일한 내용들이 너무나 많지만, 더 잘 설명해 보려는 노력을 하면 저도 배우는 점이 있을 것 같다는 생각에 포스팅을 하게 되었습니다. 프로세스 프로세스를 한마.. 2024. 2. 24.
알아두면 회사에서 인정받는 리눅스 명령어, ls ls 파일 리스트를 출력해 주는 명령어 입니다. 리눅스에서 개발을 하는 저는 매일 사용하는 명령어 이고, 이 명령어 없이는 개발이 불가능 하다고 봐도 무방할 것 같습니다. ls의 활용 ls 명령을 사용하면 현재 디렉토리의 파일 리스트가 출력됩니다. 각종 옵션을 이용하여 필요한 작업을 수행할 수 있으며, 빈번하게 사용하는 예시를 보시고 어떻게 사용되는지 감을 잡으시기 바랍니다. 현재디렉토리 파일 조회 warehouse@warehouse-VirtualBox:~/Desktop$ ls a.out test.cc 원하는 경로의 파일리스트 조회 warehouse@warehouse-VirtualBox:~/Desktop$ ls ~/ Desktop Documents Downloads Music Pictures Public.. 2024. 2. 19.
리눅스에서 C++ 프로그래밍을 위한 gcc, g++ 의 개념과 활용 리눅스에서 C++ 코드를 작성하고 이를 바이너리로 만들기 위해서는 gcc 또는 g++ 이 필요하다. 오늘은 이 도구들의 개념에 대해 알아보고, 어떻게 사용하는지 알아보고자 한다. 전공자라면 학교에서 자연스럽게 접할 수 있는 부분이지만, 요즘같이 여러 분야에서 프로그래밍을 접하는 환경에서는 다소 생소할 수 있는 개념이라고 생각해서 포스팅을 쓰게 되었다. gcc 개념 : GNU OS의 컴파일러를 시작으로 시작 된 GNU Compiler Collection 지원 언어 : C, C++, Objective-C, Fortran, Ada, Go, D gcc는 컴파일러이다. 리처드 스톨먼에 의해 만들어 진 자유소프트웨어 재단에서 발현된 GNU 프로젝트의 일환으로 정말 널리 사용되는 컴파일러이다. 리눅스 환경에서 C로 .. 2024. 2. 18.
[Architectural Style] Data flow architecture 개념요약과 유형 DATA FLOW ARCHITECTURE 데이터플로우 아키텍쳐는 입력되는 정보를 계속 변경해 나가는 설계기법이다. 데이터플로우 패턴은 상당히 명백하며, 프로세스 간 다른 상호작용이 없다. 주요 구성요소 데이터플로우 아키텍쳐의 주요 구성요소는 두가지 입니다. 1. Component(Data Transformer) - 입력을 바탕으로 출력을 생성합니다. 2. Connector(Data Channel) - I/O stream, I/O files, buffer 등으로 구현되며, 데이터가 흘러가는 연결을 의미합니다. Data flow system의 유형 일반적으로 데이터는 제멋대로 흘러가지만, 우리는 선형으로 흘러가는 데이터흐름을 가진 시스템 또는 단순한 구조에 주로 관심을 갖습니다. 대표적인 data flow .. 2024. 2. 1.
[Architectural style] Data-centered architecture의 개념과 유형 Data-Centered Architecture Data-centered architecture 는 모든 주변 Software component들과 공유하는 중앙집중형 데이터 저장소를 갖는 설계 스타일이다. Data-Centric Architecture로도 불리운다. Data-centered architecture에서 각 client components 는 서로 직접 메시지를 전달하지 않고, Data store를 통해 통신을 수행한다. 특정 client 간 데이터 송-수신이 필요한 경우 별도의 Data store 추가 구성도 가능하다. 주요 구성요소 Data-centered architecture는 크게 두가지 구성 요소를 갖는다. 1. Data store 2. Data client Data-center.. 2024. 1. 31.
품질속성 만족을 위한 잘 알려진 설계전술, Tactic의 개념과 종류 안녕하세요 warehouse 입니다. 오늘은 품질속성을 만족하기 위한 기술인 Tactic 에 대한 포스팅을 작성하였습니다. Tactic Software architecture tactic 에 대해 정의를 내리자면 아래와 설명할 수 있습니다. Software architecture tactics are specific design decisions or techniques employed to address and achieve quality attributes, such as performance, scalability, maintainability, and security, in a software system. 즉, Tactic은 필요한 품질속성을 만족하기 위해 사용하는 설계적 기술이라고 볼 수 있겠.. 2024. 1. 27.