Computer Science/Software Engineering

Computer Science/Software Engineering

[QA 전략] 데브옵스(DevOps)

DevOps DevOps는 소프트웨어 개발 팀과 IT 팀 간의 프로세스를 자동화하고 통합하는 일련의 관행, 도구 및 문화적 철학이다. 팀 지원, 팀 간 커뮤니케이션 및 공동 작업, 기술 자동화가 가장 중요한 요소라 볼 수 있다. 이는 일반적으로 회사 개발팀의 개발자들이 어떠한 프로젝트를 수행하고 개발을 완료하면 프로젝트가 끝나는 것이 아니라 운영팀을 통해 빌드, 테스트, 배포까지 완료되어야 하는 구조에서 나오게 된 개발 방법론이다. 하나의 작업을 완료하기 위해 두 팀간의 협업이 필요한 기존 구조는 서로의 입장을 잘 이해하고 배려해주는 이상적인 상황만 존재한다면 좋겠지만 현실에선 그러기 쉽지 않다. 개발자들은 계속해서 새로운 기술들을 도입하고 싶어하지만, 운영팀은 해당 프로젝트의 안정성에 가장 초점을 둔다..

Computer Science/Software Engineering

[QA 전략] [Flutter] File Structure

PC의 보급이 빨라지고 스마트 폰을 많은 사람들이 소유하게 되며 보다 쉽게 사람들은 파일들을 정리할 기회가 생기게 되었다. 옛날 2G 핸드폰은 주어진 구조 및 GUI 환경에서 여러 기능들을 수행하였지만 지금은 좀 더 커스터마이징 하기 간편한 구조가 되었다. 예를 들어 여러 위젯들을 이용해 바탕화면을 꾸미거나 자신만의 디렉토리를 만들어 여러 응용 프로그램들을 하나로 묶어 관리한다. 하지만 A라는 사람의 핸드폰을 B가 잠깐 사용한다면 어디에 무슨 앱이 있는지 또는 어떤 파일을 찾을 때 한 번에 찾는 건 어려울 것이다. 소스 코드도 마찬가지이다. 타인의 네이밍 규칙과 여러가지 의도를 한 눈에 파악하는 것은 매우 힘들다. 기존 레거시 코드를 유지보수 하거나 협업을 하게된다면 더더욱 정형화된 방식 또는 약속된 규..

Computer Science/Software Engineering

[QA 전략] 관심사의 분리(separation of concerns, SoC)

개발의 편의 및 효율성을 위한 여러 가지 디자인 패턴과 형상 관리 기법들이 있다. 하지만 개발 중 가장 먼저 눈에 들어오고 직접적으로 가장 자주 보게 되는 것은 본인의 현재 개발 중인 디렉토리 일 것이다. 모두 각자 자신만의 정리 방식과 파일 분할 기준이 있을 것이다. 하지만 이 과정을 좀 더 정형화하여 정리하고자 할 때 아래 개념들이 도움이 될 수 있다. 관심사의 분리(separation of concerns, SoC) 이 관심사(concerns)라는 것은 어떻게 보면 추상적일 수 있다. 하지만 의미는 명확하다. 가장 낮은 레벨(실제 프로그래밍 코드)에서 SoC는 긴 복잡한 함수를 쓰지 말라고 이야기하고는 한다. 이는 함수의 크기가 커지기 시작하면 함수가 너무 많은 작업을 처리하게 되기 때문이다. 결국..

Computer Science/Software Engineering

[QA 전략] 깃 브랜치 전략(Git Branching Strategy) - Git Flow, GitHub Flow, GitLab Flow, Trunk-based development(TBD)

Git은 알려진 툴 중 가장 널리 사용되고 있는 형상관리 및 협업을 위한 도구이다. 개인이 혼자 프로젝트를 진행한다면 자신이 작성한 코드는 곧바로 메인 master 브랜치에 push와 commit을 해도 본인만 해당 버전에 대해 알아볼 수 있다면 크게 상관이 없다. 하지만 협업을 하거나 누군가에게 코드를 공유해야 하는 오픈소스 프로젝트라면 단순히 메인 브랜치에 commit만 남발했을 때 언제 리비전 되었고 무엇을 위한 수정이었는가 등에 대한 질문들을 무수히 받게 될 수도 있다. 이런 리스크는 깃 브랜치 전략(Git Branching Strategy)을 통해 어느 정도 예방할 수 있다. 더 많은 방법론이 존재하지만 가장 범용적이라 생각되는 4가지를 선별해 보았다. Git Flow 우선 Git Flow이다...

Computer Science/Software Engineering

[Server] 스테이징 서버(Staging Server)란?

주요 개념 개발 서버(Development Server) 스테이징 서버(Staging Server) 프로덕션 서버(Production Server) 스테이징 서버(Staging Server)란 Production으로 가기 전 임시서버라 볼 수 있다. 즉, 운영환경에 적용하기 전에 확인하는 서버를 의미한다. 약어로 "ST 서버"라고도 부르기도 한다. 개발자 로컬PC -> (소스저장소) -> 빌드서버(CI서버) -> 개발서버 -> 테스트서버 -> 스테이징서버 -> 운영서버 간략히 아래의 그림과 같이 표현할 수도 있다. 참고 자료 https://ecogeo.tistory.com/tag/%EC%8A%A4%ED%85%8C%EC%9D%B4%EC%A7%95%EC%84%9C%EB%B2%84 https://conflue..

Computer Science/Software Engineering

[Server] Proxy Server와 Reverse Proxy란?

우선 Proxy Server(프록시 서버)란 클라이언트가 자신을 통해 타 네트워크 서비스에 간접적으로 접속하도록 해주는 서버이다. 서버와 클라이언트를 이어주는 역할을 수행하는 중계 서버로 볼 수 있다. 이 프록시 서버를 통해 보안성과 성능 및 안정성 향상 효과를 기대할 수 있다. 프록시 서버는 Forward Proxy Server와 Reverse Proxy Server로 나눌 수 있다. Forward Proxy Server 우리가 일반적으로 지칭하는 프록시 서버는 Forward Proxy Server를 의미한다. 포워드 프록시 서버는 클라이언트 앞에 연결된 부분이다. 아래 그림과 같이 사용자(You)에 해당하는 클라이언트가 인터넷 웹서버에 요청을 보내면 그 중간에 포워드 프록시 서버가 먼저 요청을 수신한..

AlienCoder
'Computer Science/Software Engineering' 카테고리의 글 목록 (3 Page)
loading