본문 바로가기
반응형

개발상식16

[개발상식] 런타임이란 런타임이란기본적으로는 프로그램이 실행되는 동안의 환경을 의미하기도 하지만코드를 작성 한 뒤 실행가능한 환경에 올라가는 모든 과정을 포함 합니다. 1. 왜 런타임을 알아야하는가oom이 발생한 경우를 생각해보겠습니다.oom이 발생한 원인을 확인하고 개선방안을 고민하려면로직상의 개선이 필요한건지런타임의 개선이 필요한건지실제 서버 or k8s의 노드의 스펙의 문제인지확장이 필요하다면 수직 수평중에 어떤 증설이 필요한지런타임에 대한 이해가 없다면 판단이 보다 수월해 질 수 있습니다. 2. 컴파일 방식먼저 런타임에 대한 이해를 위해 컴파일에 대해 정리합니다.컴파일이란 우리가 작성한 코드를 기계에 가까운 언어로 변경하는 과정을 말합니다.언어, 컴파일방식에 따라 개념이 조금씩 다릅니다(빌드란 컴파일된 결과물을 이용해 .. 2024. 11. 6.
[개발상식] ipconfig ifconfig 보는법(서브넷마스크, 브로드캐스팅, 게이트웨이, ip주소) 이번 게시글에서는 ipconfig, ifconfig 등의 명령어에서 나오는 ip주소 서브넷마스크, 게이트웨이 브로드캐스팅에 대해 정리합니다. 아래는 제 윈도우, 맥북, 스마트폰(와이파이)의 IP주소입니다. 1. ip주소란? ip주소는 인터넷에 있는 컴퓨터들의 고유한 주소로 컴퓨터를 식별하기 위해 사용합니다. (컴퓨터에 랜카드, 와이파이 동글 같은 인터페이스가 있어야 인터넷 통신을 할 수 있습니다) 아이피는 8bit씩 4자리, 총32bit로 이루어져 있습니다. ipconfig, ifconfig 등을 입력했을떄 172.xx.xxx.xxx, 192.168.xxx.xxx, 10.xxx.xxx.xxx(8자리의 2진수 4묶음을 10진수로 바꾸어 표기) 등이 IP주소입니다. ip는 0.0.0.0 ~ 255.255.2.. 2022. 3. 18.
[개발상식] 라우팅 테이블이란 이번 게시글에서는 라우팅 테이블에 대해 정리합니다. 라우팅 테이블은 IDC환경은 물론 클라우드에서 퍼블릭 서브넷, 프라이빗 서브넷 인터넷게이트웨이 나트게이트웨이를 이해하는데도 꼭 필요한 내용입니다. 1. 라우팅 테이블이란 위키백과에는 다음과 같이 정리되어 있습니다. 라우팅 테이블은 컴퓨터 네트워크에서 목적지 주소를 목적지에 도달하기 위한 네트워크 노선으로 변환시키는 목적으로 사용된다. 라우팅 프로토콜의 가장 중요한 목적이 바로 이러한 라우팅 테이블의 구성이다. 우리가 네트워크 요청을 하면 수많은 라우터를 거쳐 목적지로 이동하게 되는데 라우팅 테이블은 라우터에게 네트워크 패킷의 목적지의 정보를 알려주는 기능을 합니다. IPv4 경로에서 '내가 가고자 하는 목적지 ip'와 '네트워크 마스크'와 AND 연산을.. 2022. 3. 18.
[개발상식] 유저레벨스레드(Green Thread) vs 커널레벨스레드(Native Thread) 이번게시글에서는 유저레벨 스레드와 커널레벨 스레드에 대해 정리합니다. 스레드는 유저레벨 스레드(Green Thread)와 커널레벨스레드(Native Thread)로 나뉩니다. 각 스레드의 차이점을 확인하고, java, c#, python, golang은 어떤식으로 동작하는지 간단하게 정리해보겠습니다. 1. 유저레벨 스레드(Green Thread) 그린 스레드라고도 불리는 유저레벨 스레드는 VM이나, Library등에서 관리되는 스레드입니다. 프로그래밍언어를 사용해서 Thread 라이브러리를 당겨와 스레드를 만들면 유저레벨 스레드가 생성됩니다. 유저레벨 스레드는 커널레벨 스레드와 1:1방식 n:1방식 혼합방식 등으로 연결됩니다. 2. 커널레벨 스레드(Native Thread) 실제 일의 주체입니다. 커널레.. 2021. 12. 1.
[개발상식] 메모리란(DISK IO가 느린 이유, 램이 사용되는 곳) 이번 게시글에서는 메모리에 대해 정리합니다. 이번 게시글은 조금 특이합니다. DISK IO가 느린이유는 SW를 공부하시는분이, 램이 사용되는곳은 HW를 공부하시는 분이 궁금해 할만한 주제입니다. 저는 IT회사에서 일하고있고, IT 기술블로그를 운영하고있지만 전공이 컴퓨터공학이 아니라 전자통신공학입니다. 지금은 SW만 공부하고 있지만 학부생시절에는 HW를 더 많이 배웠습니다. 학부생시절 여러 트랜지스터의 물성과 만드는 법을 배우고, 이게 램이라고 까지만 배우니 휘발성이라 쓸모없어보이는 램이 왜 그렇게 인기가 많은지 궁금했었습니다. 이 둘을 통합하는 글을 꼭 한번 적고싶었는데 이제 어느정도 설명할 수 있을것 같아 작성합니다. HW 관점에서 메모리를 해석한 후 SW에 적용하겠습니다. 어느쪽을 전공했어도 최대한.. 2021. 11. 25.
[개발상식] 데이터 모델링(스키마설계 하는법, DB설계 하는법) 이번 게시글에서는 데이터 모델링 과정에 대해 정리합니다. dba가 아니더라도 RDB를 사용하는 사람이라면 최소한 알고 있어야되는 약식 스키마설계(데이터모델링) 방법은 rdb를 사용하는 사람이라면 꼭 알아야 합니다. 1. 데이터모델링(스키마설계)란 데이터 모델링이란 복잡한 현실 세계에 존재하는 데이터를 단순화 시켜 표현해 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정입니다. DBA없이 일반 백엔드 개발자끼리 모여서 RDB를 사용하는 개발을 진행하게 되면 db설계 툴을 이용해서 1:n 같은 관계를 고민하고, 테이블설계를 하고 결과를 컨플루언스같은 문서에 올리고, orm의 entity나 sql의 결과를 매핑해올 vo를 구축할 생각을 먼저하며 DB설계를 시작합니다.(erwin 같은것들이 무겁고 불편해서 아에 테.. 2021. 11. 22.
[개발상식] tdd란 (tdd 예제, tdd하는법) 1. tdd란 test driven development의 약자로 테스트코드를 작성하여 프로그램이 잘못되었음을 증명하고, 잘못된 부분을 수정하여 목표에 부합할 만큼 참으로 만드는 개발 방법론입니다. 최종적으로 올바르지 않음을 증명하는데 실패하게되면(내가 설계한 모든 잘못된점을 수정하면) 비로소 올바름이 된다는 게 해당 tdd의 사상입니다. 그러나 테스트코드는 작성하여 버그가 있음을 보여줄뿐, 버그가 없음을 보여줄 수는 없습니다. 다만 tdd를 통해 미리 생각해낸 생기는 버그는 모두 잡아낼 수 있습니다. 최근에는 테스트코드가 동작을 테스트하기위해 사용될 뿐 아니라, jenkins 등의 ci 도구를 사용할때 test코드의 성공여부를 확인해 all green 인 경우에만 pr을 통과시키거나 운영브랜치로 mer.. 2021. 11. 16.
[개발상식] 객체지향 설계 5대원칙(solid)이란 이번 게시글에서는 객체지향 설계 5대원칙에 대해 정리합니다. SOLID란 1980년대 유즈넷(구 페이스북)에서 설계 원칙을 토론하며 이들 원칙을 모으기 시작했습니다. 2004년 무렵 마이클 페더스가 해당 원칙을 재배열하며 각 원칙의 첫글자(SPR, OCP, LSP, ISP, DIP)를 따서 SOLID라는 단어를 만들며 탄생하게 되었습니다. 단일책임원칙(SPR: Single Response Principle) 개방-패쇄 원칙(OCP: Open Closed Principle) 리스코프 치환 원칙(LSP: Liskoc Substituion Principle) 인터페이스 분리 원칙(ISP: Interface Segregation Principle) 의존성 역전 원칙(Dependency Inversion Prin.. 2021. 9. 9.
[개발상식] 프로세스간 통신(IPC) 프로세스간 통신(inter-process communication, ipc)이란 프로세스 사이에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로를 뜻합니다. 프로세스간 통신을 해야하는경우 (1). 중요 프로세스의 안정성을 위해 하나의 프로세스에서 공유자원을 동기화한후 여러 스레드가 사용하면 데이터 공유를 상대적으로 쉽게 할수 있습니다. 그러나 하나의 프로세스가 죽어버리면 같은 프로세스의 모든 스레드가 죽어버려 위험한 상황이 올 수도 있습니다. (ex api를 제공하는 작업과 데이터를 분석, 적재하는 작업을 하나의 프로세스에서 하는경우, 데이터 분석과정에 exception이 발생해 프로그램이 내려간다면 클라이언트에게 api가 나가지 못하는 상황이 발생할 수 있습니다.) (2). 싱글코어만 쓰는 .. 2021. 8. 25.
반응형